安装MySQL数据库后一般会遇到远程计算机不能连接的问题,具体问题需要我们排查。
可能一:MySQL数据库是否提供了外部访问的用户以及权限?
可能二:MySQL的配置文件是否只绑定了本机ip?(ubuntu下:/etc/mysql/mysql.conf.d/mysqld.cnf)
可能三:操作系统的防火墙不允许外部访问3306端口
本文环境:Ubuntu 22.04,MySQL 8.0.32(通过 apt 安装)。
# 通过 apt 安装 mysql sudo apt list | grep mysql-server sudo apt install mysql-server
排查一:在安装了MySQL数据库的计算机上,命令行进入MySQL
mysql -u root -p # 可能需要在前面加上 sudo
执行语句:
use mysql; select user, host from user;
如果 root 用户的 host 为 localhost,则说明没有设定外部访问的用户,接下来我们给root用户赋予外部访问的权限,执行2条语句:
update user set host = '%' where user ='root'; grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; # MySQL赋权报错 参考:https://blog.csdn.net/weixin_44455388/article/details/119681517 # 原因:高版本的MySQL把将创建账户和赋予权限分开了 # 创建账户 # create user 'root'@'%' identified by '123456'; # 修改账户 # alter user 'root'@'%' identified by '123456'; # 此时还是不能使用Navicat登录,因为mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是 caching_sha2_password,所以需要按照下面的步骤修改登录用户的加密规则: # 参考:https://blog.csdn.net/CaiSenNan/article/details/119823608 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456' PASSWORD EXPIRE NEVER; # 赋予权限 grant all privileges on *.* to 'root'@'%' with grant option; flush privileges;
注意 123456 是你给 root 设定的密码,注意拼写,一切ok后再次查看 user 表内的内容
这里解释一下grant语句格式
grant 权限1,权限2,…权限n on 数据库名.表名 to 用户名@用户地址 identified by ‘用户密码’ with grant option;
权限1,权限2,…代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等权限。
如果是all privileges或者all,表示赋予用户全部权限。
如果数据库名.表名被*.*代替,表示赋予该用户可以操作服务器上所有数据库所有表的权限。
用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用'%'表示从任何地址。
'用户密码'必须提供。
最后的 with grant option 表示权限传递,意思是允许该用户将其权限分配给其他人。
排查二:配置文件是否只绑定了本机ip
使用gedit文本编辑器打开mysql的配置文件,把bind-address = 127.0.0.0这行注释掉(句首加上#),当然,也可以绑定你所需的主机,ubuntu终端执行:
sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
保存退出,重启mysql(systemctl restart mysql)。
重启后可以使用 netstat -an|grep 3306 命令来查看端口情况
排查三:关于操作系统的防火墙不允许外部访问3306端口
根据操作系统自行排查
本文参考:https://www.shuzhiduo.com/A/Gkz17MDQ5R/
本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work
尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。