一些mysql远程连接出现的错误

297 阅读1分钟

ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)

1、登录服务器上的mysql

mysql -u root -p

2、给'root'@'%'添加权限

mysql> grant all privileges on *.* to 'root'@'%' with grant option;

3、报错

ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)

4、解决

本来参考这篇文章,但是在skip-grant-tables模式下无法使用grant命令去做权限操作 stackoverflow.com/questions/7…

没办法只能重置mysql

// 停止mysql服务
service mysqld stop

// 删除数据目录
目录在 /var/lib/mysql 这个路径下
sudo rm -rf /var/lib/mysql

// 初始化 MySQL
mysqld --initialize

// 重启 MySQL 服务
sudo systemctl restart mysqld

// 如果没有权限启动再执行下面代码
sudo chown -R mysql:mysql /var/lib/mysql

// 查看初始密码
cat /var/log/mysql/mysqld.log | grep password

// 登录
mysql -u root -p

// 到上面已经解决了该问题,下面是创建远程连接的后续工作

2002 - Can't connect to server on '47.106.252.87' (36)

使用navicat创建远程连接的时候报错

首先查看mysql是否启动,我的是正常的

service mysql status

然后确保防火墙允许3306端口访问

firewall-cmd --zone=public --query-port=3306/tcp
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

在mysql命令行查看端口

SHOW VARIABLES LIKE 'port';


返回如下
+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| port          | 0  |

+---------------+-------+

1 row in set (0.01 sec)

说明3306端口没被监听,检查了配置文件没有问题,再次使用万能的重启大法

sudo systemctl restart mysqld

解决了