在使用navicat访问虚拟机上的mysql时报can't connnect to MySQL server on 'localhost' (10038)
首先看是否可以ping通ubuntu上的IP地址,如果能ping说明网络是好的,然后在telnet,本机cmd,telnet ip 3306,显示连接失败。
mysql在初始化安装时默认只能本机连接,即只允许localhost;查看方式:
netstat -an | grep 3306
显示信息为
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
127.0.0.1 表示只监听本机回环地址,只能本机访问,0.0.0.0 表示监听本地所有ip地址,其他电脑是可以访问的,并且修改ip不受影响,修改
/etc/mysql/mysql.conf.d,修改mysqld.cnf中的 bind-address = 127.0.0.1 改为 bind-address = 0.0.0.0
重启mysql :service mysqld restart
确定下防火墙是否有拦截端口;确认3306没有被墙,
然后在用navicat访问连接成功;
但是只能使用root账号连接,普通用户登录 Access denied for user 'aaaa'@'192.168.1.100' (using password: YES)
解决方式:授权处理,进入mysql命令行:mysql -uroot -h127.0.0.1 -p;授权
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
刷新:
flush privileges;
其中usrname是你的用户名,%是访问的机器,password是密码。 %访问IP不受限制,若想限制特定IP,则替换下%就好
来源:oschina
链接:https://my.oschina.net/u/615096/blog/787592