MYSQL8.0 远程root可用配置

资源链接:

Mysql 提示 Operation ALTER USER failed for ‘root‘@‘%‘_operate alter user failed for-优快云博客

如何在MySQL 8.0版本中开启远程登录_mysql8.0开启远程访问权限-优快云博客

Can't Connect to MySQL Server on IP Address (10061) 错误的解决方案

 如何在MySQL 8.0版本中开启远程登录

      在MySQL 8.0版本中开启远程登录功能是一个相对简单的过程,主要包括几个关键步骤:登录MySQL服务器、修改用户身份验证方式、授权远程访问以及配置防火墙规则。以下是详细的操作步骤:

1. 登录MySQL服务器本地

        首先,你需要以具有足够权限的用户(通常为root用户)登录MySQL服务器本地。在终端中执行如下命令:

mysql -u root -p

        当提示输入密码时,输入你的MySQL root用户密码,然后回车,你将进入MySQL的交互式命令行界面。

2. 修改用户身份验证插件


        MySQL 8.0默认使用caching_sha2_password身份验证插件,为了兼容更多旧版客户端,你可以将root用户的认证方式更改为mysql_native_password插件:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_strong_password';

    请将 'your_strong_password' 替换为你要设置的root用户的远程访问密码。

3. 授权远程访问

        接下来,你需要赋予root用户远程访问权限。若允许任意IP地址访问,执行:

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

        如果你想只为特定IP地址授权远程访问,可以这样操作:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_remote_ip' WITH GRANT OPTION;

        将 'your_remote_ip' 替换为你希望允许远程连接的特定IP地址。

4. 刷新权限

        为了让以上权限更改生效,执行以下SQL命令:

FLUSH PRIVILEGES;

5. 配置防火墙规则(一般不配置)

        确保服务器上的防火墙允许MySQL服务端口(默认为3306)的入站流量:

        对于使用ufw防火墙的Ubuntu等系统:

sudo ufw allow 3306/tcp

        对于使用firewalld防火墙的CentOS/RHEL系统:

sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

6. 考虑SELinux设置(仅限SELinux启用)(一般不配置)


        如果你的系统启用了SELinux,可能还需要调整SELinux策略以允许MySQL接受远程连接。具体操作取决于系统的具体配置和SELinux策略。

        注意:

        上述命令中的用户名、密码和IP地址应替换为实际值。
在生产环境中,不推荐直接使用root账户进行远程访问,而是建议创建专门的远程访问用户并给予适当权限。
        根据具体的安全策略和合规要求,务必遵循最小权限原则,仅向远程访问用户授予完成任务所需的最低权限。

7.撤销用户权限

REVOKE [权限] ON [数据库].[表] FROM 'username'@'host';
REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'localhost';

8. 删除用户

DROP USER 'username'@'host';

异常情况处理:

1、Mysql 提示 Operation ALTER USER failed for ‘root‘@‘%‘

1、连接服务器: `mysql -u root -p`
2、看当前所有数据库:show databases;
3、进入mysql数据库:use mysql;
4、查看mysql数据库中所有的表:show tables;
5、查看user表中的数据:select Host, User from user;
6、修改user表中的Host: update user set Host='%' where User='root';   
    说明: % 代表任意的客户端,可替换成具体IP地址。
7、flush privileges;
8、如果要修改密码:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '更换密码';
9、最后刷新一下:flush privileges;
 

2、Can't Connect to MySQL Server on IP Address (10061) 错误的解决方案

 (1)改 MySQL 配置文件

        在默认情况下,MySQL 数据库仅监听本地连接。如果想让外网远程连接到数据库,我们需要修改配置文件,让 MySQL 可以监听远程固定 ip 或者监听所有远程 ip。

        首先打开 mysqld.cnf 配置文件。

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

        找到 bind - address 这一行,如下图所示。

        默认情况下, bind - address 的值为 127.0.0.1 ,所以只能监听本地连接。我们需要将这个值改为远程连接 ip 可访问,可使用通配符 ip 地址 *::0.0.0.0 ,当然也可以是单独的固定 ip,这样就仅允许指定 ip 连接,更加安全。

        更改后,保存并退出编辑器(使用 CTRL+X 保存并退出 nano 编辑器。)

        然后重启 MySQL 服务,使刚刚编辑的 mysqld.cnf 文件生效:

sudo systemctl restart mysql

(2)新建用于远程登录的 MySQL 账号

        MySQL 用户账号是否可以远程登录,取决于账号中的 host 配置。host 指定该账号在哪些主机上可以登录,如果是本地用户可用 localhost, 如果是远程用户,需要指定远程计算机的 IP,如果想任意主机均可登录,那么可以使用通配符 %,本教程使用通配符 % 来作为账号 host 的设置,你可以根据自己的情况将 % 改为指定主机 IP,这样可以是 MySQL 远程登录更加安全。

        首先登录 MySQL Server

mysql -u root -p

        然后新建一个用于远程登录的 MySQL 账号,这里的「password」换成你的密码,如果MySQL 设置为严格密码的话,需要「数字+英文大小写+符号」

CREATE USER 'kalacloud.com-remote'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

        接着,根据自己的需要,给你用于远程访问的账号赋予权限。下面的例子是给账号全局权限,包括创建(CREATE)、修改(ALTER)、删除(DROP) 数据库、表、用户,任意表的插入(INSERT)、更新(UPDATE)、删除(DELETE)操作权限。可以使用 SELECT 查询数据,使用 REFERENCES 建立外键关系权限,以及使用 RELOAD 权限执行 FLUSH 操作的权限。

        当然,你也可以根据自己都需求,对账号权限进行调整。

GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'kalacloud.com-remote'@'%' WITH GRANT OPTION;

        最后,运行 FLUSH PRIVILEGES 命令,刷新 MySQL 的系统权限相关表,更新缓存。

FLUSH PRIVILEGES;

(3)将已有账号更改为可远程登录的账号

        如果你不想新建账号,只是想沿用已经有的MySQL 登录账号,那么我们也可以直接把它改为可远程登录的账号。

        首先,我们查看 MySQL 所有账号

SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

        接下来,我们把 'kalacloud.com'@'localhost' 这个账号改为可远程登录的账号。我们把这个账号 host 改为任意主机(%)或者是固定主机 ip 。可以使用 RENAME USER 命令来实现:

RENAME USER 'kalacloud.com'@'localhost' TO 'kalacloud.com'@'%';

        执行后,再查看 MySQL 所有账号列表

SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

        我们可以看到 'kalacloud.com'@'localhost' 已经变为 'kalacloud.com'@'%' 了。

        特别提示:如果你使用的是 MySQL 8.0,使用这个账号远程登录可能会出现caching_sha2_password 报错,这是因为 MySQL 8.0 默认认证方式改为 SHA2 了,如果不支持 SHA2 插件认证方式,那么就会报错,比如使用 Workbench 和 Squel Pro 登录时,如下图。

MySQL said: Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/lib/plugin/caching_sha2_password.so, 2): image not found

        我们可以把使用 caching_sha2_plugin 认证的'kalacloud'@'%'账号改为使用密码认证。

ALTER USER 'kalacloud.com'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

        最后运行 FLUSH PRIVILEGES命令 刷新 MySQL 系统权限相关表,更新缓存

FLUSH PRIVILEGES;

### MySQL 8.0.40 安装与配置教程 #### 准备工作 为了确保顺利安装MySQL,在开始之前需确认操作系统环境已准备好。对于Linux系统而言,建议提前准备一个稳定的网络连接用于下载必要的资源文件;另外需要注意的是计算机环境中最好预先部署Python,因为缺少它可能导致某些特性不可用[^3]。 #### 获取MySQL软件包 考虑到通过在线方式利用`yum`工具获取MySQL可能会遇到长时间等待甚至中途断开的情况,推荐采用离线方式进行安装。具体做法是从官方渠道或者其他可信站点下载适用于目标平台版本的MySQL压缩包——这里以MySQL 8.0.40为例,并将其传输至待操作的服务器上[^1]。 #### 解压并设置目录结构 上传完成后,选择合适的位置解压缩所得到的`.tar.gz`文件。通常情况下会创建一个新的文件夹来容纳这些提取出来的文件,比如可以通过命令`mv mysql-8.0.40-linux-glibc2.12-x86_64 /usr/local/mysql`来进行重命名以及移动位置的操作[^2]。 #### 初始化数据库实例 进入刚刚建立好的MySQL根目录下执行初始化脚本,这一步骤非常重要因为它负责构建初始的数据存储空间以及其他基础架构要素。一般形式如下所示: ```bash bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data ``` 请注意上述路径应当依据实际情况调整。 #### 配置服务启动项 为了让MySQL能够随系统的开机自动运行,还需要编辑相应的systemd单元文件或者/etc/init.d下的传统init脚本。下面给出了一种基于systemctl的方法作为参考: ```bash cp support-files/mysql.server /etc/init.d/mysql systemctl daemon-reload systemctl enable mysql.service ``` #### 修改权限及安全加固措施 完成以上步骤之后,应该适当修改相关文件夹及其内部对象的所有者属性给定为特定的服务账号(如:mysql),同时给予恰当读写许可权限。此外,强烈建议立即更改root用户的默认密码,并关闭远程访问端口除非确实有必要开放此功能。 #### 启动服务验证状态 最后当然是尝试启动新搭建起来的服务看看是否一切正常啦! ```bash service mysqld start ``` 如果没有任何报错提示,则说明整个流程已经顺利完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值