MySQL 8 root 远程登陆

介绍

MySQL是一个广泛使用的开源关系型数据库管理系统。它是Web应用中最常用的数据库之一,被广泛用于存储和管理数据。MySQL 8是MySQL数据库的最新版本,它引入了许多新功能和改进。

MySQL的root用户是具有最高权限的用户,可以执行任何操作。默认情况下,root用户只能在本地登录MySQL数据库,即只能通过本地主机进行访问。但是,在某些情况下,我们可能需要从远程主机进行访问和管理MySQL数据库。

本文将向您介绍如何在MySQL 8中配置root用户的远程登录,并提供相应的代码示例。

配置MySQL 8允许root远程登录

要允许root用户从远程主机进行登录,我们需要进行以下步骤:

步骤 1:修改MySQL配置文件

在开始之前,请先备份您的MySQL配置文件。

要修改MySQL配置文件,请按照以下步骤进行:

  1. 打开MySQL配置文件(通常位于/etc/mysql/mysql.conf.d/mysqld.cnf/etc/mysql/my.cnf)。
  2. 找到并注释掉以下行(如果存在):
    bind-address = 127.0.0.1
    
    注释掉的方式是在行开头添加#符号。
  3. 保存并关闭配置文件。

步骤 2:重新启动MySQL服务

在修改MySQL配置文件后,我们需要重新启动MySQL服务以使更改生效。

要重新启动MySQL服务,请使用以下命令:

sudo systemctl restart mysql

步骤 3:更新root用户的访问权限

MySQL 8引入了一种新的身份验证插件caching_sha2_password,它与旧版本的MySQL身份验证方式不兼容。为了使root用户能够从远程主机进行登录,我们需要更新其身份验证插件。

要更新root用户的身份验证插件,请按照以下步骤进行:

  1. 以root身份登录到MySQL服务器:
    mysql -u root -p
    
  2. 在MySQL shell中,执行以下命令以修改root用户的身份验证插件:
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
    
    your_password替换为您希望设置的root用户密码。
  3. 执行以下命令以刷新权限:
    FLUSH PRIVILEGES;
    
  4. 退出MySQL shell:
    exit;
    

步骤 4:授予root用户远程登录权限

为了允许root用户从远程主机进行登录,我们需要授予其相应的权限。

要授予root用户远程登录权限,请按照以下步骤进行:

  1. 以root身份登录到MySQL服务器:
    mysql -u root -p
    
  2. 在MySQL shell中,执行以下命令以授予root用户远程登录权限:
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
    
    your_password替换为您之前设置的root用户密码。 这个命令允许root用户从任何远程主机进行登录。
  3. 执行以下命令以刷新权限:
    FLUSH PRIVILEGES;
    
  4. 退出MySQL shell:
    exit;
    

代码示例

以下是一个示例代码,演示如何使用Python的mysql-connector-python库从远程主机连接到MySQL服务器。

import mysql.connector

# 连接到MySQL服务器
cnx = mysql.connector.connect(
    host='your_mysql_server_ip',
    user='root',
    password='your_password',
    database='your_database'
)

# 执行查询语句
cursor = cnx.cursor()
cursor.execute('SELECT * FROM your_table')

# 获取查询结果
result = cursor.fetchall()
for row in result:
    print(row)

# 关闭连接
cnx.close()

请确保您已将your_mysql_server_ip替换为您MySQL服务器