mysql8 创建外部访问的root用户

在 MySQL 8 中,默认情况下,root 用户是通过 Unix socket 认证的,这意味着你不能通过 TCP/IP 连接到 MySQL 服务器作为 root 用户,除非你明确更改了 root 用户的认证方式。如果你想创建一个可以远程访问的 root 用户,你需要执行以下步骤:

1. 登录到 MySQL

首先,你需要以 root 身份(通过 Unix socket 或者其他具有足够权限的用户)登录到 MySQL。

mysql -u root -p

2. 创建远程访问的 root 用户

在 MySQL 命令行中,使用以下 SQL 语句创建一个新的 root 用户,该用户可以从任何主机连接到 MySQL 服务器:

CREATEUSER'root'@'%' IDENTIFIED BY'your_password';Code language: JavaScript (javascript)

这里 'root'@'%' 表示用户名是 root,而 % 表示允许从任何 IP 地址连接。your_password 是你为这个新用户设置的密码。

3. 授权远程 root 用户

给这个新创建的 root 用户授予所有权限:

GRANTALL PRIVILEGES ON*.*TO'root'@'%'WITHGRANT OPTION;Code language: JavaScript (javascript)

4. 应用权限更改

执行以下命令来使权限更改生效:

FLUSH PRIVILEGES;

5. (可选)移除或限制原始 root 用户的访问权限

出于安全考虑,你可能想限制或禁用通过 Unix socket 的原始 root 用户的访问。你可以通过以下命令来禁用:

DROPUSER'root'@'localhost';Code language: JavaScript (javascript)

或者,如果你只是想限制它的权限,可以这样做:

REVOKEALL PRIVILEGES, GRANT OPTION FROM'root'@'localhost';FLUSH PRIVILEGES;Code language: JavaScript (javascript)

6. 测试连接

使用新创建的 root 用户从远程机器尝试连接:

mysql -u root -p -h your_server_ip_address

替换 your_server_ip_address 为你的 MySQL 服务器的 IP 地址。输入你为 root 用户设置的密码。

注意:

  • 安全性:允许远程访问的 root 用户具有很高的权限,这可能导致安全风险。确保你的服务器有适当的安全措施(如防火墙规则、强密码策略等)。
  • 配置文件:确保 MySQL 的配置文件(通常是 my.cnf 或 mysqld.cnf)中的 bind-address 被设置为你的服务器 IP 或者为 0.0.0.0 以允许从任何 IP 地址连接。例如:[mysqld]bind-address = 0.0.0.0修改配置后,需要重启 MySQL 服务。

通过以上步骤,你应该能够成功创建一个可以从远程访问的 root 用户。