记一次MySQL8.0远程连接失败问题

部署MySQL

wget https://dev.mysql.com/get/mysql-apt-config_0.8.1-1_all.deb

dpkg -i mysql-apt-config_0.8.1-1_all.deb

安装:

Sudo apt-get install mysql-server -y

重启:

Sudo service mysql restart

创建新用户:这里的密码是踩坑之一

mysql>create user 'user'@'127.0.0.1' identified by '*passwd';

授权:

mysql>grant all on *.* to 'user'@'127.0.0.1';	本地授权
mysql>grant all on *.* to 'user'@'远程IP';	远程授权

刷新:

mysql>flush privileges;

问题记录

1:创建用户的时候密码不能以特殊字符开头,现在需要更改密码
MySQL8.0更改密码,注意 这两条命令已经不起作用了

mysql>update mysql.user set password='newpassword' where user='root';

 和

mysql>update mysql.user set password=PASSWORD('newpassword') where User='root';

现在的版本用的是:

mysql>alter user 'user'@'127.0.0.1' identified by 'passwd';

2:更改完密码之后远程连接连不上了
2.1更改完密码的用户需要重新授权

授权:
mysql>grant all on *.* to 'user'@'127.0.0.1';	本地授权
mysql>grant all on *.* to 'user'@'远程IP';	远程授权

远程连接还是不行
MySQL8.0有个插件是:mysql_native_password
所以这样操作

mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

重新授权
mysql>grant all on *.* to 'user'@'127.0.0.1';	本地授权
mysql>grant all on *.* to 'user'@'远程IP';	远程授权

刷新
flush privileges;

查看一下用户,主机和插件

在这里插入图片描述

远程连接成功

<think>好的,我现在需要帮助用户了解如何在CentOS 7上设置MySQL 8.0远程连接。首先,我得回忆一下MySQL 8.0远程访问设置步骤,可能有几个关键点需要注意。 首先,用户需要确认MySQL已经正确安装并运行在CentOS 7上。接下来,可能需要修改MySQL的配置文件,通常是/etc/my.cnf或者/etc/mysql/my.cnf,找到bind-address这一项,默认可能是127.0.0.1,需要注释掉或者改为0.0.0.0,这样MySQL才能监听所有接口,而不仅仅是本地。 然后,用户需要登录到MySQL服务器,创建一个允许远程连接的用户账户,或者修改现有用户的权限。在MySQL 8.0中,创建用户和授权的方式可能和旧版本不同,比如使用CREATE USER和GRANT语句,同时需要注意密码插件的更改,比如caching_sha2_password的问题,可能需要更改为mysql_native_password或者允许使用新的插件。 接着,要确保CentOS 7的防火墙放行3306端口,使用firewalld的话,需要添加规则允许MySQL的端口。另外,如果服务器在云上,可能还需要检查安全组的设置,确保外部流量可以到达服务器的3306端口。 可能还需要考虑SELinux的问题,如果启用了SELinux,可能需要调整策略,允许MySQL的网络连接。不过,有些用户可能会选择暂时禁用SELinux来测试是否是它导致的问题。 最后,测试远程连接是否成功,可以使用另一个机器上的MySQL客户端尝试连接,确保所有步骤都正确执行。如果连接失败,可能需要检查错误日志,通常位于/var/log/mysqld.log,查看具体的问题原因。 需要注意的是,MySQL 8.0默认的认证插件是caching_sha2_password,而一些旧的客户端可能不支持,这时候可能需要更改用户的认证方式,或者在连接时指定使用新的插件。此外,授权后必须执行FLUSH PRIVILEGES来使更改生效。 总结一下步骤大致是:修改配置文件允许远程连接,创建或修改用户权限,处理防火墙和SELinux,测试连接。确保每一步都正确无误,如果有问题,逐步排查可能的障碍点,比如网络问题、权限问题或认证方式问题。</think>在CentOS 7中设置MySQL 8.0远程连接,需按以下步骤操作: --- ### 一、修改MySQL配置文件 1. 打开MySQL配置文件: ```bash sudo vim /etc/my.cnf ``` 2. 找到`bind-address`行(可能为`127.0.0.1`或`::1`),修改为: ```ini bind-address = 0.0.0.0 ``` 若不存在则手动添加该行 3. 保存后重启MySQL服务: ```bash sudo systemctl restart mysqld ``` --- ### 二、创建远程访问用户 1. 登录MySQL: ```bash mysql -u root -p ``` 2. 创建用户(示例用户`remote_user`,密码`YourPassword123!`): ```sql CREATE USER 'remote_user'@'%' IDENTIFIED WITH mysql_native_password BY 'YourPassword123!'; ``` > **说明**:`mysql_native_password`可兼容旧客户端,如需使用默认插件则改为`caching_sha2_password` 3. 授权远程访问权限: ```sql GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` --- ### 三、配置防火墙 1. 开放3306端口: ```bash sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload ``` --- ### 四、SELinux设置(可选) 若已启用SELinux,执行: ```bash sudo setsebool -P mysql_connect_any 1 ``` --- ### 五、测试远程连接 使用其他设备执行: ```bash mysql -u remote_user -h [服务器IP] -p ``` --- ### 常见问题排查 1. **连接被拒绝**: - 检查防火墙规则 - 确认MySQL监听状态: ```bash sudo netstat -tuln | grep 3306 ``` 2. **认证失败**: ```sql ALTER USER 'remote_user'@'%' IDENTIFIED WITH mysql_native_password BY 'NewPassword123!'; ``` --- 通过以上步骤即可实现MySQL 8.0远程访问,建议使用强密码并限制访问IP保障安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值