近期准备打算装用虚拟机搭建一个web服务器环境做测试,使用的事ubantu16.04 server版,web环境APACHE+php+mysql,但是按照网上的教程安装后无法用其他ip登录mysql,主要问题有以下两点
1.首先使用navicat直接连接会被告知
can't connect to mysql server on‘xx.xx.xx.xx’
这里的问题是由于数据库暂时不允许外部ip访问
解决方法:首先root本地登录数据库,输入命令
use mysql;
update user set Host=‘%’ where User=‘root’;//原来Host 是localhost,为本机,现在改为%为任何ip
然后修改mysql配置文件
找到 /etc/mysql/mysql.conf/mysqld.cnf
将 bind-adress 改为 0.0.0.0
输入 sudo Service mysql restart 重启mysql服务器
2、修改完后使用navicat连接服务器提示
251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
原因是因为你使用的mysql服务器版本中使用了新的密码验证机制,这需要客户端的版本要在4.0以上
但是网上网络上给出的答案包括官网大部分都是说原来的密码函数被改为old_password(),
并提供解决方案
mysql> SET PASSWORD FOR -> 'some_user'@'some_host' = OLD_PASSWORD('new_password');
但是事实上mysql5.7中user表已经没有password字段而改成了authentication
old_password()函数也不在使用,查阅外网结果找到解决方案
use mysql;
update user set authentication_string=password('你的新密码'),plugin='mysql_native_password' where user='root';