我们在刚学习MySQL数据库时一般都是连接localhost然后登录root用户创建数据库进行操作,在后续的使用过程中产生了通过其他主机来访问自己的数据库的需求,本文在这里介绍两种MySQL数据库远程登录的授权方法。
以下两种方法都是基于MySQL命令行模式进行操作的,分别是改表法和授权法。
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 许可协议。转载请注明出处!
THE END
暂无评论内容