【lesson32】MySQL用户管理

文章目录

用户管理介绍

用户

用户信息

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

bash 复制代码
//操作语法
mysql> use mysql;
Database changed
mysql> select host,user,authentication_string from user;

字段解释:

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

创建用户

cpp 复制代码
//操作语法
create user '用户名'@'登陆主机/ip' identified by '密码';

案例;

我们查看user表

user表中确实多了一个用户;

我们尝试用该用户登入

发现确实也能登入。

但是只能在本地登入,不能远程登入。

想要在任意主机登入,得用下列语句创建一个用户。

bash 复制代码
create user 'lzf' @'%' identified by '123456';

这里就不演示了。

删除用户

cpp 复制代码
drop user '用户名'@'主机名'

修改用户密码

自己改自己密码

bash 复制代码
set password=password('新的密码');

root用户修改指定用户的密码

bash 复制代码
set password for '用户名'@'主机名'=password('新的密码');

用update修改密码

cpp 复制代码
update user set authentication_string = password('11111') where user = 'lzf';

因为用户的信息是被管理在user表中的,所以我们可以直接该user表中的密码。

同样我们也可以直接对user表进行用户的增删查改。

数据库的权限


给用户授权

语法:

bash 复制代码
grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by '密码']

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

cpp 复制代码
grant select on ...
grant select, delete, create on ....
grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有权限
  • *.**: 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)
  • 库.* : 表示某个数据库中的所有数据对象(表,视图,存储过程等)
  • identified by可选。 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户

案例:

bash 复制代码
--使用root账号
--终端A
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| 57test |
| bit_index |
| ccdata_pro |
| innodb_test |
| musicserver |
| myisam_test |
| mysql |
| order_sys |
| performance_schema |
| scott |
| sys |
| test |
| vod_system |
+--------------------+
14 rows in set (0.00 sec)
mysql> use test;
Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| account |
| student |
| user |
+----------------+
3 rows in set (0.01 sec)

--给用户lzf赋予test数据库下所有文件的select权限
mysql> grant select on test.* to 'lzf'@'localhost';
Query OK, 0 rows affected (0.01 sec)
--使用lzf账号
bash 复制代码
--终端B
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)
--暂停等root用户给whb赋完权之后,在查看
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test | --赋完权之后,就能看到新的表
+--------------------+
2 rows in set (0.01 sec)
mysql> use test;
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> show tables;
+----------------+
| Tables_in_test |
+----------------+
| account |
| student |
| user |
+----------------+
3 rows in set (0.00 sec)
mysql> select * from account;
+----+--------+---------+
| id | name | blance |
+----+--------+---------+
| 2 | 李四 | 321.00 |
| 3 | 王五 | 5432.00 |
| 4 | 赵六 | 543.90 |
| 5 | 赵六 | 543.90 |
+----+--------+---------+
4 rows in set (0.00 sec)
--没有删除权限
mysql> delete from account;
ERROR 1142 (42000): DELETE command denied to user 'whb'@'localhost' for table 'account'
备注:特定用户现有查看权限
mysql> show grants for 'lzf'@'%';
bash 复制代码
+-----------------------------------------------+
| Grants for lzf@% |
+-----------------------------------------------+
| GRANT USAGE ON *.* TO 'lzf'@'%' |
| GRANT ALL PRIVILEGES ON `test`.* TO 'lzf'@'%' |
+-----------------------------------------------+
2 rows in set (0.00 sec)
mysql> show grants for 'root'@'%';
+-------------------------------------------------------------+
| Grants for root@% |
+-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION |
+-------------------------------------------------------------+
1 row in set (0.00 sec)

注意:如果发现赋权限后,没有生效,执行如下指令:

bash 复制代码
flush privileges;

回收权限

语法:

cpp 复制代码
revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';

案例

bash 复制代码
-- 回收lzf对test数据库的所有权限
--root身份,终端A
mysql> revoke all on test.* from 'lzf'@'localhost';
Query OK, 0 rows affected (0.00 sec)
--lzf身份,终端B
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
+--------------------+
2 rows in set (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)
相关推荐
不光头强3 小时前
Spring框架的事务管理
数据库·spring·oracle
百***92025 小时前
【MySQL】MySQL库的操作
android·数据库·mysql
q***76665 小时前
Spring Boot 从 2.7.x 升级到 3.3注意事项
数据库·hive·spring boot
信仰_2739932435 小时前
Redis红锁
数据库·redis·缓存
人间打气筒(Ada)5 小时前
Centos7 搭建hadoop2.7.2、hbase伪分布式集群
数据库·分布式·hbase
心灵宝贝5 小时前
如何在 Mac 上安装 MySQL 8.0.20.dmg(从下载到使用全流程)
数据库·mysql·macos
想睡hhh5 小时前
mysql索引——理解索引机制及操作
mysql
剑动山河5 小时前
ubuntu 升级mysql由mysql5.7.42 升级到8.4.0
mysql·ubuntu·adb
奋斗的牛马6 小时前
OFDM理解
网络·数据库·单片机·嵌入式硬件·fpga开发·信息与通信
忧郁的橙子.7 小时前
一、Rabbit MQ 初级
服务器·网络·数据库