MySQL 远程登录开启方法
1. 检查 MySQL 远程访问状态
1.1 登录 MySQL
首先,使用 root
账户登录 MySQL:
sudo mysql -u root -p
输入密码后,进入 MySQL 命令行模式。
1.2 检查当前 MySQL 允许的连接
运行:
SELECT Host, User FROM mysql.user;
如果 Host
只显示 localhost
,表示当前 MySQL 仅允许本机访问,如下所示:
+-----------+-----------+ | Host | User | +-----------+-----------+ | localhost | root | +-----------+-----------+
如果要允许远程访问,需要修改 MySQL 配置并添加远程用户。
2. 修改 MySQL 配置,允许远程访问
2.1 编辑 MySQL 配置文件
不同的 MySQL 版本,配置文件路径可能有所不同:
Ubuntu / Debian:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
CentOS / RHEL:
sudo nano /etc/my.cnf
找到这一行:
bind-address = 127.0.0.1
修改为:
bind-address = 0.0.0.0
这样,MySQL 将监听所有 IP 地址。
2.2 重启 MySQL 服务
修改配置后,重启 MySQL 使其生效:
sudo systemctl restart mysql
或:
sudo service mysql restart
3. 创建远程访问用户
3.1 创建一个允许远程访问的用户
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password123';
其中:
'remote_user'
是新创建的 MySQL 账户名'%'
代表允许任何 IP 地址访问'password123'
是该账户的密码
3.2 赋予远程用户权限
让 remote_user
拥有访问所有数据库的权限:
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
如果你只想让它访问某个特定数据库:
GRANT ALL PRIVILEGES ON my_database.* TO 'remote_user'@'%'; FLUSH PRIVILEGES;
注意:
FLUSH PRIVILEGES;
让权限立即生效。
4. 开放 MySQL 3306 端口
4.1 允许 MySQL 端口(3306)
MySQL 默认使用 3306 端口,你需要确保防火墙已放行该端口:
Ubuntu(使用 UFW 防火墙)
sudo ufw allow 3306/tcp sudo ufw reload
CentOS(使用 firewalld)
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent sudo firewall-cmd --reload
检查端口是否开放
sudo netstat -tulnp | grep 3306
或:
ss -tulnp | grep mysql
如果 MySQL 正在监听 0.0.0.0:3306
,表示远程访问已开启。
5. 远程连接 MySQL
5.1 本地测试远程连接
在另一台计算机上(Windows 或 Linux),使用以下命令测试:
mysql -u remote_user -p -h 服务器IP -P 3306
例如:
mysql -u remote_user -p -h 192.168.1.100 -P 3306
输入密码后,如果成功连接,则表示远程访问配置完成。
5.2 使用 MySQL Workbench 连接
如果你在 Windows 上使用 MySQL Workbench,可以输入:
Hostname:
服务器IP
Port:
3306
Username:
remote_user
Password:
password123
点击 "Connect",如果连接成功,说明远程访问已启用。
6. 常见问题排查
问题 1:远程连接时报 Access denied
如果远程连接时出现:
ERROR 1045 (28000): Access denied for user 'remote_user'@'192.168.1.10' (using password: YES)
可以用以下命令检查用户权限:
SELECT User, Host FROM mysql.user;
如果 Host
不是 %
,可以执行:
UPDATE mysql.user SET Host='%' WHERE User='remote_user'; FLUSH PRIVILEGES;
问题 2:MySQL 仍然只监听 127.0.0.1
netstat -tulnp | grep mysql
如果输出:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1234/mysqld
说明 MySQL 仍然绑定在 127.0.0.1
,请检查 /etc/mysql/mysql.conf.d/mysqld.cnf
是否正确修改。
问题 3:防火墙拦截
如果连接超时,检查防火墙规则:
sudo ufw status sudo firewall-cmd --list-all
如果 3306 端口未开放,请参考 步骤 4 进行配置。
7. 总结
修改 MySQL 配置:修改
bind-address = 0.0.0.0
创建远程用户:
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password123';GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
开放防火墙 3306 端口
使用 MySQL Workbench 或命令行连接
按照本教程操作,你就可以轻松在服务器上 开启 MySQL 远程访问,远程管理数据库。🚀 更多技术教程请关注「码农资讯网」!
1、部分文章来源于网络,仅作为参考。 2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!