我们在刚学习 MySQL 数据库时一般都是连接 localhost 然后登录 root 用户创建数据库进行操作,在后续的使用过程中产生了通过其他主机来访问自己的数据库的需求,本文在这里介绍两种 MySQL 数据库远程登录的授权方法。
以下两种方法都是基于 MySQL 命令行模式进行操作的,分别是改表法和授权法。
![图片[1] - MySQL数据库授权远程登录(Windows/Linux)- 登山亦有道](http://qiniu.chenyan98.cn/wp-content/uploads/2021/03/1616979398-image-edited.webp)
1. 改表法:
当你的帐号不允许从远程登陆,只能在 localhost
连接时。这个时候只要在 mysql 服务器上,更改 mysql
数据库里的 user
表里的 host
项,从 localhost"
改成%
即可实现用户远程登录
在安装 mysql 的机器上运行:
#1. 输入密码登录 mysql,执行第二步之前需要先使用:use mysql 来选中 mysql 这个表!
mysql -u root -p
use mysql
#2. 查看 mysql 这个表的内容
select host,user from user where user='root';
#3. 将表内的 localhost 这个值更新为'%'
update user set host = '%' where user='root' and host='localhost';
#4.
select host, user from user where user='root';
Q:为什么要把表内 localhost 更新为’%’
Host 列表指定了允许用户登录所使用的 IP,比如 user=root Host=192.168.1.1。这里的意思就是说 root 用户只能通过 192.168.1.1 的客户端去访问。
而% 是个通配符,如果 Host=192.168.1.%,那么就表示只要是 IP 地址前缀为 “192.168.1.” 的客户端都可以连接。如果 Host=%,表示所有 IP 都有连接权限。
2. 授权法:
1. 允许 user
使用password
从任何主机连接到 mysql 服务器的话。(所有用户授权)
在安装 mysql 的机器上运行:
#1. 授权用户访问数据库
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
#2. 刷新 MySQL 的系统权限相关表
FLUSH PRIVILEGES;#注意授权后必须 FLUSH PRIVILEGES; 否则无法立即生效.
#3. 将'user'和'password'字段修改为你的数据库用户名和密码 (注意)。
2. 允许用户 user
从 ip 为 192.168.2.158
的主机连接到 mysql
服务器,并使用 password
作为密码 (单用户授权)
#1. 授权用户访问数据库
GRANT ALL PRIVILEGES ON . TO 'user'@'192.168.2.158' IDENTIFIED BY 'password' WITH GRANT OPTION;
#2. 刷新 MySQL 的系统权限相关表
FLUSH PRIVILEGES;
#3. 将'user'和'password'字段修改为你的数据库用户名和密码。
3. 基于 mysql 的分支 MariaDB 使用授权法连接远程数据库 (主要区别是命令使用小写以及 user 名称不带 ‘ ‘ )
#1. 执行命令输入你的密码,进入数据库
mysql -u root -p
#2. 下面命令中 root 替换为你自己的数据库用户 'password'替换为你自己的密码
grant all privileges on *.* to root@'%' identified by 'password' with grant option;
#3. 刷新 MySQL 的系统权限相关表
flush privileges;
以上为授权用户远程访问 MySQL 数据库的两种方法。
参考链接:
作者:晨岩
本站所有文章除特别声明外,均采用 BY-NC-SA 4.0 许可协议。转载请注明出处!
暂无评论内容