MySQL用户管理

一、用户

1.用户信息

MySQL中的用户,都存储在系统数据库mysql的user表中

mysql> use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> select host,user,authentication_string from user\G

*************************** 1. row ***************************

host: 39.97.230.215

user: zbr

authentication_string: A005$9\Es[o#Np :uS:iRLKTLVJMyOGm/4o706Ao4P4VPhftw8vTC1FK/sYHQiGvT8

*************************** 2. row ***************************

host: localhost

user: debian-sys-maint

Ki%B3QdfrOpOZZq9ZY9yBFzStHJaGf8XGKvakOeJ2NrMNB

*************************** 3. row ***************************

host: localhost

user: home

authentication_string: A005$Tx<>J,yj?yH7zgV3FnfTlsDozoVQxJ/B2.VBSbmylv3beVxnB/Vg58wiMIW0

*************************** 4. row ***************************

host: localhost

user: mysql.infoschema

authentication_string: A005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED

*************************** 5. row ***************************

host: localhost

user: mysql.session

authentication_string: A005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED

*************************** 6. row ***************************

host: localhost

user: mysql.sys

authentication_string: A005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED

*************************** 7. row ***************************

host: localhost

user: r

字段解释:

  • host:表示这个用户可以从哪个主机登录,如果是localhost,表示只能从本主机登录
  • user:用户名
  • authentication_string:用户密码通过password函数加密后的值

2.创建用户

语法

create user '用户名'@'登录主机/ip' identified by '密码';

案例

mysql> create user 'xxz'@'localhost' identified by '密码';

mysql> select user,host from user;

+------------------+---------------+

| user | host |

+------------------+---------------+

| zbr | 39.97.230.215 |

| debian-sys-maint | localhost |

| home | localhost |

| mysql.infoschema | localhost |

| mysql.session | localhost |

| mysql.sys | localhost |

| root | localhost |

| xxz | localhost |

+------------------+---------------+

8 rows in set (0.00 sec)

3.删除用户

删除的时候是根据用户名+主机名来删的

语法

drop user '用户名'@'主机名';

用例

mysql> drop user 'xxz'@'localhost';

Query OK, 0 rows affected (0.03 sec)

4.修改用户代码

语法

自己改自己的密码

alter user '用户名'@'主机名' identified by 'Xhx20060722';

二、数据库权限

MySQL数据库提供的权限列表

1.给用户授权

刚创建的用户没有任何权限。需要给用户授权

语法

grant 权限列表 on 库.对象名 to '用户名'@'登录位置' identified by '密码';

说明

权限列表,多个权限用逗号分开

grant select,delete ,create on

  • *.* 代表本系统中的所有数据库的所有对象(表,视图,存储过程)
  • 库.* 表示某个数据库中的所有数据对象
  • identified by 可选,如果用户存在,则在赋予权限的同时改密码

mysql> grant select on myschool.* to 'xxz'@'localhost' ;
mysql> select * from students;

+----+-----+------+-------+

| id | sn | name | qq |

+----+-----+------+-------+

| 1 | 100 | xhx | 10001 |

| 3 | 101 | zbr | 10003 |

| 4 | 102 | zbr | 10003 |

| 5 | 103 | xxz | NULL |

+----+-----+------+-------+

4 rows in set (0.01 sec)

-- 无删除权限

mysql> delete from students;

ERROR 1142 (42000): DELETE command denied to user 'xxz'@'localhost' for table 'students'

2.回收权限

语法

revoke 权限列表 on 库.对象名 from '用户名'@'登录位置';

实例

mysql> revoke select on myschool.* from 'xxz'@'localhost';

Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.02 sec)
mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| performance_schema |

+--------------------+

2 rows in set (0.00 sec)

三、角色

角色可以理解为权限的集合包

例:开发岗位要增删查改

测试岗位要只读

不用给每个用户一条条授权,把权限根据人员的不同,组织成一个包来赋权,这个包就是角色

1.创建角色

语法

create role 角色名;

实例

mysql> create role r_role;

Query OK, 0 rows affected (0.03 sec)

2.给角色授权

语法

grant select on 数据库名.表名 to 角色;

示例

mysql> grant select on myschool.* to r_role;

Query OK, 0 rows affected (0.01 sec)

3.把角色授予用户

语法

grant 角色名 to '用户名'@'地址';

示例

mysql> grant r_role to 'xxz'@'localhost';

Query OK, 0 rows affected (0.02 sec)

4.激活角色

需要用户自己进行激活自己的角色

set role 角色名; --只对当前一次有效
set default role 角色名 to '用户名'@'地址'; -- 永久绑定

5.查看用户有哪些角色

同查看有哪些权限一样

6.收回角色

revoke 角色名 from '用户名'@'地址';

7.删除角色

drop role 角色名;

相关推荐
梦影_3 小时前
MySQL进阶教程(五)—— SQL调优(下)
android·大数据·数据库·后端·sql·mysql·database
考虑考虑3 小时前
mariadb数据库
数据库·后端·mariadb
John_Hui5 小时前
Windows 10 安装版本:mysql-8.1.0-winx64.zip
数据库·windows·mysql
莫晓燚5 小时前
双机部署若依 (RuoYi‑Vue) 传统环境部署---实战
linux·运维·数据库·redis·mysql·nginx·ruoyi
updayday8546 小时前
客户附件不该发往旧邮箱,如何在发送前拦截 - Ping64 邮件安全管控
大数据·网络·数据库·安全·智能路由器
倔强的石头_6 小时前
连接异常排障手册:拒连、超时、认证失败、空闲断开
数据库
lhbweilai6 小时前
QT(了解各个控件和布局)上
数据库·qt
莫晓燚7 小时前
搭建Redis 主从复制---实战
数据库·redis·缓存
灵晔君7 小时前
【MySQL】数据库基础
数据库·mysql·adb