🎬 HoRain云小助手:个人主页
🔥 个人专栏: 《Linux 系列教程》《c语言教程》
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
专栏介绍
专栏名称 | 专栏介绍 |
《C语言》 | 本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。 |
《网络协议》 | 本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制! |
《docker容器精解篇》 | 全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。 |
《linux系列》 | 本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。 |
《python 系列》 | 本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。 |
《试题库》 | 本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等) |
目录
⛳️ 推荐
专栏介绍
🔧 安装MySQL服务器
⚙️ 配置远程访问
👤 创建用户并授权
🔥 配置防火墙
📡 测试远程连接
🐛 常见问题排查
💡 安全建议
在Linux系统中安装和配置MySQL以实现远程连接,主要涉及安装服务、修改配置、设置用户权限和配置防火墙等步骤。下面我将为你详细说明整个流程,并附上一些安全建议和故障排查方法。
🔧 安装MySQL服务器
首先,你需要在Linux服务器上安装MySQL。不同发行版的安装命令略有不同。
更新系统包管理器(建议第一步执行):
# 对于 Ubuntu/Debian sudo apt update && sudo apt upgrade -y # 对于 CentOS/RHEL sudo yum update -y安装MySQL服务器:
# 对于 Ubuntu/Debian sudo apt install mysql-server -y # 对于 CentOS/RHEL sudo yum install mysql-server -y安装完成后,MySQL服务通常会自动启动。如果没有,可以使用
sudo systemctl start mysqld命令启动,并用sudo systemctl enable mysqld命令设置开机自启。运行安全配置脚本:
安装后,强烈建议运行
mysql_secure_installation脚本进行基本安全加固,包括设置root密码、删除匿名用户、禁止root远程登录等。sudo mysql_secure_installation
⚙️ 配置远程访问
默认情况下,MySQL只允许本地连接。要允许远程连接,需要进行以下配置。
修改MySQL配置文件:
找到MySQL的主配置文件并编辑。常见的路径如下:
Ubuntu/Debian:
/etc/mysql/mysql.conf.d/mysqld.cnfCentOS/RHEL:
/etc/my.cnf或/etc/my.cnf.d/server.cnf
使用文本编辑器(如
nano或vim)打开文件,找到bind-address这一行。默认可能是127.0.0.1或localhost,这意味着只监听本地连接。sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf将这一行修改为:
bind-address = 0.0.0.0或者直接在这一行前面加
#注释掉它。0.0.0.0表示MySQL将监听所有网络接口上的连接。保存并退出编辑器。重启MySQL服务:
修改配置后,必须重启MySQL服务才能使更改生效。
# 对于 Ubuntu/Debian sudo systemctl restart mysql # 对于 CentOS/RHEL sudo systemctl restart mysqld
👤 创建用户并授权
即使允许了远程连接,还需要一个具有远程访问权限的用户。
登录MySQL:
mysql -u root -p输入你设置的root密码。
创建远程访问用户并授权:
在MySQL提示符下,执行以下命令。出于安全考虑,最好不要直接使用root用户进行远程连接,而是创建一个专用用户。
允许从特定IP地址连接(更安全):
CREATE USER 'remote_user'@'192.168.1.100' IDENTIFIED BY 'strong_password'; GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'192.168.1.100' WITH GRANT OPTION; FLUSH PRIVILEGES;将
192.168.1.100替换为客户端的实际IP地址,strong_password替换为强密码。允许从任何IP地址连接(方便但风险较高,慎用):
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'very_strong_password'; GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;这里的
%是通配符,代表任何主机。完成后退出MySQL:EXIT;
🔥 配置防火墙
如果服务器启用了防火墙,需要开放MySQL的默认端口(3306)。
对于UFW(Ubuntu/Debian常用):
sudo ufw allow 3306/tcp sudo ufw reload对于firewalld(CentOS/RHEL常用):
sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload使用iptables(通用):
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT然后保存规则(保存命令因系统而异)。
📡 测试远程连接
在另一台机器上(客户端),使用MySQL客户端工具进行测试。
mysql -u remote_user -h [你的MySQL服务器IP地址] -p输入密码后,如果能够成功登录MySQL shell,说明远程连接配置成功。
🐛 常见问题排查
如果连接失败,可以检查以下几点:
错误1130 (HY000): Host '...' is not allowed to connect to this MySQL server
原因:用户没有从该客户端IP地址连接的权限。
解决:检查MySQL中用户的
host字段是否正确设置,确保已执行FLUSH PRIVILEGES;。错误2003 (HY000): Can't connect to MySQL server on '...'
原因:网络或防火墙问题导致无法到达MySQL服务器。
解决:
确认MySQL服务正在运行:
sudo systemctl status mysqld。检查服务器防火墙是否确实已开放3306端口。
如果服务器在云平台(如腾讯云、阿里云),检查安全组规则是否允许入站流量到3306端口。
使用
telnet [服务器IP] 3306测试端口连通性。
错误1045 (28000): Access denied for user '...'
原因:用户名或密码错误。
💡 安全建议
最小权限原则:仅授予用户完成其任务所必需的最小权限,避免使用
GRANT ALL PRIVILEGES ON *.*,除非绝对必要。限制访问源:尽量使用特定IP或IP段(如
'user'@'192.168.1.%')来创建用户,而不是使用通配符%。使用强密码:为数据库用户设置复杂且唯一的密码。
考虑SSL加密:对于敏感数据,建议配置MySQL使用SSL加密远程连接。
定期审计:定期检查
mysql.user表,清理不必要的用户和权限。
按照以上步骤操作,你应该能在Linux下成功安装MySQL并配置好远程连接。如果遇到具体问题,可以告诉我你遇到的错误信息和你使用的Linux发行版,我会提供更具体的帮助。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙