解决在本地连接不上阿里云服务器mysql服务的问题
先得在阿里云上把3306端口添加到安全组
编辑 MySQL 配置文件
在默认情况下,MySQL 数据库仅监听本地连接。如果想让外网远程连接到数据库,我们需要修改配置文件,让 MySQL 可以监听远程固定 ip 或者监听所有远程 ip。
首先打开 mysqld.cnf 配置文件(如果你不是Ubuntu ,可在 /etc/mysql/ 目录下找到配置文件)。
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到 bind - address 这一行,如下图所示。
默认情况下, bind - address 的值为 127.0.0.1 ,所以只能监听本地连接。我们需要将这个值改为远程连接 ip 可访问,可使用通配符 ip 地址 *, ::, 0.0.0.0 ,当然也可以是单独的固定 ip,这样就仅允许指定 ip 连接,更加安全。
提示:在某些 MySQL 版本的配置文件中,没有 bind - address 这一行,这种情况下,在合适的位置加上就可以了。
更改后,保存并退出编辑器(使用 CTRL+X 保存并退出 nano 编辑器。)
然后重启 MySQL 服务,使刚刚编辑的 mysqld.cnf 文件生效:
sudo systemctl restart mysql
首先先进入mysql的服务,选择mysql这个库,然后查看user用户的host属性,会发现其host属性值是localhost,意思是只准许本地的连接访问。此时我们要对他修改为谁都可以访问的。
修改的sql语句如下:
use mysql;
update user set host="%" where user=“root”;
如上面的报错试试下面的
update user set host="%" where user='root';
flush privileges;
这样操作后再次尝试连接mysql服务,可能又会出现1689的报错,这是因为root用户的plugin被修改成了auth_socket,用密码登陆的plugin应该是mysql_native_password。因此要对其就行修改。修改的sql语句如下:
update user set plugin=‘mysql_native_password’ where user=“root”;
flush privileges;
大家可以先用sql语句查看我上述的一些用户信息,然后解决问题。
信息修改完之后,重新启动MySQL的服务,再测试一下连接,应该就可以了。希望能有所帮助。