mysql远程访问权限使用详解 mysql怎么开启远程访问权限

发布时间:2020-10-16编辑:脚本学堂
本文介绍了mysql远程访问权限的用法,为Mysql添加远程访问权限的实例教程,几种添加Mysql用户远程访问权限的方法,有需要的朋友参考下。

mysqlyuanchengfangwen/ target=_blank class=infotextkey>mysql远程访问权限

几种添加Mysql用户远程访问权限的方法
MySQL 上的一个数据库要备份,装了个MySQL的gui工具。打开"MySQL Administrator"工具,填好用户名和密码却登录不了,老是报这个错“ERROR 1130: Host 'lijuan-' is not allowed to connect to this MySQL server”。网上查了下,有这两个方法解决:
解决方法:
1、改表法。
可能是帐号不允许从远程登陆,只能在localhost。
只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
 

复制代码 代码示例:
mysql -u root -pvmwaremysql>use mysql;mysql>update user set host = '%' where user = 'root';mysql>select host, user from user;

2、授权法。
例如,想myuser使用mypassword从任何主机连接到mysql服务器的话。
 

复制代码 代码示例:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
 

如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码
 

复制代码 代码示例:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
 

我 的mysql.user里root用户的host果然是localhost,先用改表法给localhost改成“%”,还是不行,仍然报1130的错 误,又按“从任何主机连接到mysql服务器”方法授权,还是报一样的错,最后给自己的ip授权之后,终于登录上了。

mysql的ERROR 1045 在上面情况后如再出现客户段1045可在服务器执行:
 

复制代码 代码示例:
UPDATE user SET Password=PASSWORD('123456') where USER='myuser';
 

FLUSH PRIVILEGES;//用户付完权限后对数据进行刷新时用!要不mysql数据库识别不了

例如:(必须参考以上再看下面的例子)
 

复制代码 代码示例:
GRANT ALL ON *.* TO admin@'%' IDENTIFIED BY 'admin' WITH GRANT OPTION;
mysql "192.168.50.85" "admin" "admin" ;
GRANT ALL ON *.* TO admin@'localhost' IDENTIFIED BY 'admin' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.50.85' IDENTIFIED BY '123456' WITH GRANT OPTION;
UPDATE user SET Password=PASSWORD('123456') where USER='myuser';
FLUSH PRIVILEGES;
 

mysql默认是没有开启远程控制的,必须添加远程访问的用户。
mysql默认是没有开启远程控制的,必须添加远程访问的用户。

如果是安装版的话,从mysql提供的控制台进入。
用root用户登陆,然后:
 

复制代码 代码示例:
grant all privileges on *.* to 创建的用户名 @"%" identified by "密码";
flush privileges; * 刷新刚才的内容* )

格式:grant 权限 on 数据库名.表名 to 用户@登录主机 identified by "用户密码"; .=h j Qi[
@ 后面是访问mysql的客户端IP地址(或是 主机名) % 代表任意的客户端,如果填写 localhost 为本地访问(那此用户就不能远程访问该mysql数据库了)。

同时也可以为现有的用户设置是否具有远程访问权限。如下:
 

复制代码 代码示例:
use mysql;
update db set host = '%' where user = '用户名'; (如果写成 host=localhost 那此用户就不具有远程访问权限)
FLUSH PRIVILEGES;
 

查看结果,执行:
 

复制代码 代码示例:

use mysql;
select host,user,password from user;

+--------------+--------+---------------+
| Host | User | Password | XKL Di{ U
+--------------+--------+-----------------+
| localhost | | |
| % | John | 123456 |
| localhost | root | |
+--------------+------ --+---------------+

总结:
其实mysql默认有两个数据库分别为 mysql 和 test 而mysql用户的信息都放在数据库 mysql 的相关表中,也可以使用 Navicat (推荐)这样的GUI工具来管理用户。
update user set host='%' where host='localhost'
工作中用到web服务器和mysql服务器不在同一台计算机上安装的运用。需要通过mysql的远程账户访问mysql。

语法:
grant [权限] on [数据库名].[表命] to ['用户命']@['web服务器的ip地址'] identified by ['密码'];

例子:
 

复制代码 代码示例:
grant all on lportal.* to 'root'@'192.168.1.21 identified by 'root';
grant select,update,insert,delete on lportal.* to 'root'@'192.168.1.21 identified by 'root';

您可能感兴趣的文章: