MySQL 远程登录开启方法

阅读:147 2025-03-07

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

  • Port3306

  • Usernameremote_user

  • Passwordpassword123

点击 "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处理!