mysql远程连接失败

mysql运行环境,VMware虚拟机Ubuntu20,宿主机win10,使用Navicat连接该数据库,连接失败。

connection refused

MySQL(connection refused)解决方法文章里之前已经写过了是同一个问题,可以参考下。

配置文件取消本机绑定

本人Ubuntumysql配置文件路径:

1
2
3
/etc/mysql/mysql.conf.d/mysqld.cnf
# 找到绑定地址,将其注释
# bind-address = 127.0.0.1

注释之后发现还是连接不了。

修改用户表对应host

1
mysql> update user set host = "%" where user="tony";

再次尝试进行连接,使用命令行可以正确连接,但是Navicat报错:“Authentication plugin 'caching_sha2_password' cannot be loaded

修改加密规则

出现以上报错信息,原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password.

升级Navicat没啥说的,直接说第二种:

登录mysql

我这里直接使用sudo了,这样就不用数据用户名了。

1
2
3
sudo mysql
也可以mysql账户登录
mysql -u root -p

更新加密规则

1
2
3
4
5
6
7
# 修改加密规则 
mysql> ALTER USER 'tony'@'%' IDENTIFIED BY '646547989' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.02 sec)

# 更新一下用户的密码
mysql> ALTER USER 'tony'@'%' IDENTIFIED WITH mysql_native_password BY '646547989';
Query OK, 0 rows affected (0.00 sec)

刷新权限

1
2
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

授权数据库

Navicat已经成功连接了mysql,但是没有该用户下没有数据库,授权+刷新权限即可将所有数据库加到该用户下。

1
2
3
4
5
mysql> grant all privileges on *.* to 'tony'@'%';
Query OK, 0 rows affected (0.02 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

查找mysql配置文件

1
2
3
4
5
6
mysql --verbose --help | grep -A 1 'Default options'
#
mysqld --verbose --help | grep -A 1 'Default options'
# 输出结果:
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

或者

1
2
3
4
mysql --help|grep 'my.cnf'
输出结果:
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

默认配置选项会按上述文件的顺序读取