1、使用username和password无法连接
在mysql表中,host没有%,一般localhost和127.0.0.1是服务器本地访问的主机名(host),但是远程的工具无法连接,要在host列中添加一个%。
use mysql;
create user 'user_name'@'%' identified by '';
--修改密码
set password for 'root'@'localhost'=password('1111');
主机名:localhost 127.0.0.1 只允许本机访问
主机名 % 允许任意主机访问
2、使用Navicat连接以后无法查看表
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
--将相应的*换成特定的表或者数据库,可以指定特定的数据库下的表的访问权限
3、转载
Mysql 用户管理和权限设置
1.查看用户
2.创建用户
3.授权用户
4.删除用户
5.设置与更改用户密码
6.撤销用户权限
1.查看用户
查看用户并没有直接的SQL语句,而是进入 mysql数据库的user表(这个mysql库和user表都是一开始就有的),直接用 select * from user;来查看有什么用户
由于在linux下比较难看,因为格式比较乱,所以我用了 SQLyog这个软件登陆数据库来操作。
代码如下:
[sql] view plain copy
- use mysql;
- select * from user;
[图片上传失败...(image-253c7e-1552151936120)]
效果如上图,最后用数据库软件,因为在linux下界面看不清效果,太乱了。
从上图可以看到,会列出数据库所有的用户及权限
2.创建用户
CREATE USER 'user_name'@'host' IDENTIFIED BY 'password';
user_name:要创建用户的名字。
host:表示要这个新创建的用户允许从哪台机登陆,如果只允许从本机登陆,则 填 ‘localhost’ ,如果允许从远程登陆,则填 ‘%’
password:新创建用户的登陆数据库密码,如果没密码可以不写。
例:
**CREATE USER ‘aaa’@‘localhost’ IDENTIFED BY ‘123456’; ** //表示创建的新用户,名为aaa,这个新用户密码为123456,只允许本机登陆
CREATE USER 'bbb'@'%' IDENTIFED BY '123456';//表示新创建的用户,名为bbb,这个用户密码为123456,可以从其他电脑远程登陆mysql所在服务器
CREATE USER ‘ccc’@‘%’ ;//表示新创建的用户ccc,没有密码,可以从其他电脑远程登陆mysql服务器
我用 CREATE USER 'aaa'@‘%’;创建新用户,再用 select * from user;查看用户列表:
[图片上传失败...(image-16aaf9-1552151936120)]
可以看出 有 aaa用户了。但是可以看到 aaa 的权限很多都是 N,表示没有权限,因为还要为用户授予权限。
3.授权用户
命令:GRANT privileges ON databasename.tablename TO ‘username’@‘host’
privileges:表示要授予什么权力,例如可以有 select , insert ,delete,update等,如果要授予全部权力,则填 ALL
databasename.tablename:表示用户的权限能用在哪个库的哪个表中,如果想要用户的权限很作用于所有的数据库所有的表,则填 .,*是一个通配符,表示全部。
’username‘@‘host’:表示授权给哪个用户。
例:
GRANT select,insert ON zje.zje TO ‘aaa’@‘%’; //表示给用户aaa授权,让aaa能给zje库中的zje表 实行 insert 和 select。
GRANT ALL ON . TO ‘aaa’@‘%’;//表示给用户aaa授权,让aaa能给所有库所有表实行所有的权力。
用GRANT ALL ON . TO ‘aaa’@‘%’ ;再看用户列表,可以发现权限都变成 Y了。
[图片上传失败...(image-5b3f62-1552151936120)]
注意:
用以上命令授权的用户不能给其他用户授权,如果想这个用户能够给其他用户授权,就要在后面加上 WITH GRANT OPTION
如:** GRANT ALL ON . TO ’aaa‘@'%' WITH GRANT OPTION; **
4.删除用户
命令:**DROP USER ‘user_name’@‘host’ **
例:
DROP USER 'aaa'@‘%’;//表示删除用户aaa;
5.设置与更改用户密码
SET PASSWORD FOR ‘username’@‘host’ = PASSWORD(‘newpassword’);
如果是设置当前用户的密码:
SET PASSWORD = PASSWORD('newpassword');
如:** SET PASSWORD = PASSWORD(‘123456’);**
6.撤销用户权限:
命令:REVOKE privileges ON database.tablename FROM ‘username’@‘host’;
例如:** REVOKE SELECT ON . FROM ‘zje’@‘%’;**
但注意:
若授予权利是这样写: GRANT SELECT ON . TO ‘zje’@‘%’;
则用 REVOKE SELECT ON zje.aaa TO ‘zje’@‘%’;是不能撤销用户zje 对 zje.aaa 中的SELECT 权利的。
反过来 GRANT SELECT ON zje.aaa TO ‘zje’@‘%’;授予权力
用 REVOKE SELECT ON . FROM ‘zje’@‘%’;也是不能用来撤销用户zje 对zje库的aaa表的SELECT 权利的