ubuntu mysql8远程链接相关问题

之前一直在用简单的sqlite,没怎么使用过mysql,今天配置mysql的时候,本来以为相关的问题应该很成熟很好查找并解决了,但是实际使用的时候发现有很多莫名其妙的问题。我在这里做一个记录。

真正让这些问题难以解决的原因是,我无法从对方简单的报错中找到解决问题的有效信息。如果连接失败,你只会知道对方拒绝了链接,但并不知道它为什么拒绝。于是我只好猜测是否是网络原因,wsl与windows通信异常等。这样一来方向就错了。我想这种设计的理由也许是安全考虑?

mysql配置文件更改

要想让mysql访问外部网络,首先要让它的3306监听对象设置为0.0.0.0,而非localhost。这需要在配置文件中进行更改。位置/etc/mysql/mysql.conf.d/mysqld.cnf:

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
# bind-address          = 127.0.0.1 
# mysqlx-bind-address   = 127.0.0.1

如上所示,这里在bind-address以及mysqlx-bind-address前面加上 # 即可。(mysqlx-bind-address可加可不加)。

更改后重启服务:

service mysql restart

然后验证一下,netstat -ap | grep mysql:

tcp6       0      0 [::]:mysql              [::]:*                  LISTEN      278/mysqld          
tcp6       0      0 [::]:33060              [::]:*                  LISTEN      278/mysqld   

第三列(local address)出现 [::]或者0.0.0.0即可。

用户权限更改

  1. 进入到mysql命令行控制台的配置界面。根据root用户的插件不同,可能是
mysql

或者

mysql -uroot -p 
  1. 进入mysql配置数据库(注意分号):
use mysql;
  1. 查看当前用户信息:
select user,host,plugin from user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | auth_socket           |
+------------------+-----------+-----------------------+

假定你想使用root用户作为远程链接的对象,那么你需要修改host为%(代表mysql中的链接通配符),且plugin不能是auth_socket。MySQL 8 对 root默认使用 auth_socket 插件进行认证,这会导致你在命令行下(同一台机器)无需输入密码就可登录,但远程连接会被拒绝。使用如下命令进行修改:

update user set plugin="caching_sha2_password" where user='root';
update user set host = '%' where user = 'root';

链接客户端配置

有的时候会出现这个报错:

Public Key Retrieval is not allowed

在客户端的属性配置里面需要打开这个选项:

allowPublicKeyRetrieval=True

dbeaver为例:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值