本文仅仅适用于冷门错误,其他未提到的大家去参考这位大佬的文章MySQL8允许远程连接_wilson_go的博客-CSDN博客_mysql8允许远程连接
前提:成功登录了mysql,如果在初始化时,mysql没有给随机密码的话,请先去/etc/my.cnf添加
skip-grant-tables,这个配置可以让你随便输入账号和密码就能登录mysql,登录mysql后修改密码。然后重启即可。
一、mysql端口为0问题
1、问题描述
(1)登录数据库
mysql -uroot -p密码
(2)查看 port参数
mysql> show variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 0 |
+---------------+-------+
1 row in set (0.00 sec)
显示port为0
2、解决办法
(1)查看skip-networking参数
mysql> show variables like 'skip_networking';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| skip_networking | ON |
+-----------------+-------+
(2)编辑/etc/my.cnf
查看文件中是否有skip-networking和skip-grant-tables,有的话把这两条注释掉或删掉。
补充:之所以skip-grant-tables也要关闭,是因为skip-grant-tables的开启会导致skip-networking也会开启,可以这么理解:skip-grant-tables开启时,即使用户和密码随便输入也能连接mysql,因此很不安全,而skip-networking开启时mysql不能远程连接,因此起到一个保护数据库的作用。
二、云服务器上部署的mysql,基本所有的问题都排查了,可还是无法连接
原因:腾讯云等云服务器都有防火墙,不是在命令行的那个,下面这个,不能连接是因为被防火墙拦截了。
解决办法: