Featured image of post 如何配置非 Root 用户远程登录 MySQL:详细指南和最佳实践

如何配置非 Root 用户远程登录 MySQL:详细指南和最佳实践

MySQL 远程登录是数据库管理中常见的操作,但出于安全考虑,通常建议使用非 Root 用户进行远程访问。本文将详细介绍如何配置非 Root 用户远程登录 MySQL,并提供最佳实践建议,帮助您安全高效地管理数据库。

在日常使用 MySQL 数据库时,我们一般设置为root用户远程登录,但是有时候我们确实需要远程访问,所以我们需要配置非 root 用户进行远程访问。这样做不仅可以增强数据库的安全性,还能更灵活地管理数据库访问权限。下面是一个详细的指南,帮助你设置非 root 用户远程登录 MySQL。

第一步:登录 MySQL

首先,使用具有管理员权限的用户(如 root)登录 MySQL。

mysql -u root -p

输入 root 用户的密码以登录 MySQL 命令行界面。

第二步:创建新用户

使用 CREATE USER 命令创建一个新用户,并指定该用户可以从哪些主机进行连接。为了允许远程登录,将主机名指定为 %,表示允许从任何主机连接,或者设置你本地的固定的ip。

CREATE USER 'newuser'@'%' IDENTIFIED BY 'user_password';

在上述命令中,将 newuser 替换为你想要创建的用户名,并将 user_password 替换为用户的密码。

第三步:授予权限

使用 GRANT 命令授予新用户适当的权限。可以根据需要授予全局权限、数据库级权限或特定表的权限。

授予全局权限:

GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%' WITH GRANT OPTION;

. 这两个 * 分别代表数据库和数据库中的表。授予特定数据库权限(例如,授予 mydatabase 数据库的所有权限):

GRANT ALL PRIVILEGES ON mydatabase.* TO 'newuser'@'%';

第四步:刷新权限

为了使所做的权限更改生效,运行以下命令:

FLUSH PRIVILEGES;

第五步:配置 MySQL 监听所有 IP 地址

这一步容易忽略,有时候权限,防火墙,认证插件改来改去,还是不能访问,实际就是这里绑定的127.0.0.1,需要修改为0.0.0.0。 确保 MySQL 服务器配置为监听所有 IP 地址,而不仅仅是 localhost。编辑 MySQL 的配置文件 my.cnf(通常位于 /etc/mysql/my.cnf 或 /etc/my.cnf):

[mysqld]
bind-address = 0.0.0.0

保存更改并重启 MySQL 服务:

sudo service mysql restart

第六步:配置防火墙

确保防火墙允许从外部主机连接到 MySQL 的 3306 端口。

使用 iptables 开放 3306 端口:

sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
sudo netfilter-persistent save

总结

通过以上步骤,你可以成功配置一个非 root 用户远程登录 MySQL 服务器。这不仅增强了数据库的安全性,还能更灵活地管理用户访问权限。以下是完整的步骤总结:

登录 MySQL:使用管理员用户(如 root)登录 MySQL。 创建新用户:使用 CREATE USER 命令创建新用户并允许远程连接。 授予权限:使用 GRANT 命令授予新用户适当的权限。 刷新权限:运行 FLUSH PRIVILEGES 使权限更改生效。 配置 MySQL:编辑 my.cnf 确保 MySQL 监听所有 IP 地址。 配置防火墙:使用 iptables 开放 3306 端口以允许远程连接。 通过这些配置,你的 MySQL 服务器将允许非 root 用户进行远程访问,从而提高管理的灵活性和安全性。

微信公众号

使用 Hugo 构建
主题 StackJimmy 设计