欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mysql中查看用户、创建用户、删除用户、授权用户、回收授权

程序员文章站 2022-07-14 16:21:42
...

一、创建用户

1.语法

      查看用户没有直接的SQL语句,需要进入 mysql数据库的user表(mysql库和user表是mysql安装后就有的)查看所有用户信息。代码如下:

use mysql;
select * from user;

2. 结果示例:

Mysql中查看用户、创建用户、删除用户、授权用户、回收授权

3.注意事项

   5.7版本后,移除了password字段, 而是改成了字段authentication_string来存储用户密码。

二、创建用户

1.语法

CREATE USER 'user_name'@'host' IDENTIFIED BY 'password';

参数:

user_name:要创建用户的名字。

host:表示要这个新创建的用户允许从哪台机登陆,如果只允许从本机登陆,则填‘localhost’ ,如果允许从远程登陆,则填远程主机的ip,如果允许所有的主机,则填通配符"%"。

password:新创建用户的登陆数据库密码,如果没密码可以不写。

2.示例

//新建用户czt,密码为123456,只能从本地登陆mysql所在服务器
CREATE USER 'czt'@'localhost' IDENTIFED BY '123456';
//新建用户czt,密码为123456,可以从其他电脑远程登陆mysql所在服务器
CREATE USER 'czt'@'%' IDENTIFED BY '123456';
//新建用户czt,没有密码,可以从其他电脑远程登陆mysql服务器
CREATE USER 'czt'@'%';

三、删除用户

1.语法

DROP USER 'user_name'@'host';

参数:user_name:要删除的用户名

           host:主机名或IP

2.示例

DROP USER 'czt'@'%'; //表示删除用户czt

 

四、设置与更改用户密码

1.语法

// 设置指定主机指定用户的密码
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword'); 
// 设置当前主机当前用户的密码
SET PASSWORD = PASSWORD('newpassword');

2.示例

// 设置指定本机的czt用户设置密码123456
SET PASSWORD FOR 'czt'@'localhost' = PASSWORD('123456'); 
// 设置当前主机当前用户的密码为123456
SET PASSWORD = PASSWORD('123456');

注意:第二个PASSWORD()是函数,用来给用密码加密

五、授权用户

1.语法

grant privileges on databasename.tablename to 'username'@'host'

   参数:

    privileges:表示要授予什么权力,例如select、insert、update等,如果要授予全部权力,则填 all privileges,privileges可以省略

    databasename.tablename:表示用户的权限是用在哪个库的哪个表,如果想要用户的权限作用于所有数据库的所有表,则填 *.*,*是一个通配符,表示全部。

    ’username‘@‘host’:表示授权给哪个主机的哪个用户。

2.示例

//给用户czt授权在test库的person表上执行insert和select的权利
grant select, insert ON test.person TO 'czt'@'%';
//给用户czt授权在所有库所有表的所有的权力。       
grant all on *.* TO 'czt'@'%'; 
// 操作MySQL外键权限。
grant references on testdb.* to 'czt'@'192.168.0.2';
// 操作MySQL临时表权限。
grant create temporary tables on testdb.* to 'czt'@'192.168.0.2';
//操作MySQL索引权限。
grant index on testdb.* to 'czt'@'192.168.0.2';
//操作 MySQL视图、查看视图源代码权限。
grant create view on testdb.* to 'czt'@'192.168.0.2';
grant show view on testdb.* to 'czt'@'192.168.0.2';
// 操作MySQL存储过程、函数 权限。
grant create routine on testdb.* to 'czt'@'192.168.0.2'; 
grant alter routine on testdb.* to 'czt'@'192.168.0.2'; 
grant execute on testdb.* to 'czt'@'192.168.0.2';

3.权限传递

  让用以上命令授权的用户不能给其他用户授权,如果想这个用户能够给其他用户授权,需要在后面加上WITH GRANT OPTION,如

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

六、回收权限

1.语法

REVOKE privileges ON database.tablename FROM 'username'@'host';

2.示例

REVOKE select ON test.person FROM 'czt'@'localhost';

3.注意事项

      如果给用户'czt'@'%'授权时使用GRANT SELECT ON test.user TO 'czt'@'%',则使用REVOKE SELECT ON *.* FROM 'czt'@'%';命令并不能撤销该用户对test数据库中user表的SELECT 权限。相反,如果授权使用的是GRANT SELECT ON *.* TO 'czt'@'%';则REVOKE SELECT ON test.user FROM 'czt'@'%';命令也不能撤销该用户对test数据库中user表的select权限。

      如果想查看用户的具体权限信息,可以用命令SHOW GRANTS FOR 'czt'@'%'; 查看。

七、注意事项

 1. flush prrivileges:可以在不重启mysql服务器的情况下,让用户数据和权限的修改立即生效

 2. grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效