自己在服务器安装mysql 8.0版本后,准备要mysql_secure_installation设置配置密码,提示我要输入密码,我还没有设置密码,哪来的密码。后面我尝试几次密码后,均错误,利用ai和网上搜索得到答案都是忘记密码,修改密码的解决方式:先停服务,然后越权授权执行sql设置密码,但是这样操作后还是不行。后来就重新卸载重装安装,终于知道哪个环节错了。
一、mysql临时密码
//执行
mysql_secure_installation
Securing the MySQL server deployment.
// 在这里开始输入我并不知道密码是什么,然后尝试几次报错
Enter password for user root:
Error: Access denied for user 'root'@'localhost' (using password: YES)
// 1.安装完mysql后,查找出来是否存在临时密码,执行
sudo grep 'temporary password' /var/log/mysqld.log
// 查找出来有的话,会得到大概这样的结果, root@localhost:后面的字符就是临时密码
[Server] A temporary password is generated for root@localhost: ikUNi2u%i;(Bx
下一步:用临时密码登录并立即改密,初始化配置

image.png
第二:navicat连接报错10060
我想在本地能可以用navicat连接线上数据库,进入到mysql数据库设置
mysql -u root -p
// 查看有哪些数据库
show database
// 使用mysql数据库
use mysql
//查看user表中,连接权限,默认看到root是localhost
select host, user from user;
//修改权限,可以在本地使用工具连接服务器的数据库
update user set host = '%' where user = 'root';
// 配置生效
FLUSH PRIVILEGES;
然后接着我遇到第二个问题,我本地用navicat建立连接提示10060报错。

图片.png
客户端的“连接超时” 错误,
说明 TCP 三次握手都没完成 → 包根本到不了 3306,与 MySQL 自身无关。
可以查看俩点:
1.是服务器设置安全组要开放3306端口

image.png
2.服务器的防火墙也要有有开放3306端口
// 检查mysqld 真的在3306端口 监听
sudo netstat -tnlp | grep 3306
// 查看开放的防火墙端口
firewall-cmd --list-ports
// 若缺少3306端口,把它加进去
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
//重新检查下是否加入3306端口
firewall-cmd --list-port
这样用navicat重新连接线上数据库就成功了