Mysql中查看用户、创建用户、删除用户、授权用户、回收授权
一、创建用户
1.语法
查看用户没有直接的SQL语句,需要进入 mysql数据库的user表(mysql库和user表是mysql安装后就有的)查看所有用户信息。代码如下:
use mysql;
select * from user;
2. 结果示例:
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 数据库,权限才能生效
上一篇: MySQL数据库创建用户及授权
下一篇: 拖拽交换位置
推荐阅读
-
mysql5.7创建用户授权删除用户撤销授权
-
MySql增加用户、授权、修改密码等语句
-
MySQL 创建用户、授权用户、撤销用户权限、更改用户密码、删除用户(实用技巧)
-
oracle创建删除用户示例分享(oracle删除用户命令及授权)
-
MySQL添加用户、删除用户与授权
-
mysql5.7创建用户授权删除用户撤销授权
-
centos 7中添加一个新用户并授权的步骤详解
-
MySql增加用户、授权、修改密码等语句
-
MySQL创建用户与授权方法、MySQL查看版本号、MySQL执行SQL脚本的方法
-
微信小程序授权 获取用户的openid和session_key【后端使用java语言编写】,我写的是get方式,目的是测试能否获取到微信服务器中的数据,后期我会写上post请求方式。