【MySQL】用户管理

用户

用户信息

MySQL中对用户作管理,就要记录下来那些用户是允许能够使用MySQL的,所以MySQL中的信息也是在MySQL特定的表内当中被保存的,这个表就是user表,而这个表存放在mysql数据库当中的,这个mysql数据库是我们下载MySQL的时候就给我们安装好的。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              | ---这个就是存放用户信息的数据库
| oracle_9i_test     |
| performance_schema |
| sys                |
| test_db            |
+--------------------+
6 rows in set (0.00 sec)
mysql> use mysql;
mysql> show tables;
+------------------------------------------------------+
| Tables_in_mysql                                      |
+------------------------------------------------------+
| columns_priv                                         |
| component                                            |
………………
| user                                                 | ---这个就是存放用户信息的表
+------------------------------------------------------+
38 rows in set (0.00 sec)

mysql> select host,user,authentication_string from user;
+-----------+------------------+------------------------------------------------------------------------+
| host      | user             | authentication_string                                                  |
+-----------+------------------+------------------------------------------------------------------------+
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
!D\MaZZlE1JXdWECPE/CdbM6nGurPyuDxQMgHws/UAcZTz7C | --- 这个是root的账号,8.0的做了特殊处理 需查看全部才能显示select * from user \G
+-----------+------------------+------------------------------------------------------------------------+
4 rows in set (0.00 sec)

字段解释:

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

创建用户

语法:

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

案例:

mysql> create user 'chuyang'@'localhost' identified by '1234';
Query OK, 0 rows affected (0.02 sec)

mysql> select host,user,authentication_string from user;
+-----------+------------------+------------------------------------------------------------------------+
| host      | user             | authentication_string                                                  |
+-----------+------------------+------------------------------------------------------------------------+
| localhost | chuyang          | $A$005$`_Oh-(;he5S5^/pmm(Oc4h83U4NjtslihTdDntqBpcRaY/Xft7CZbz3KW6amQ4 |
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
!D\MaZZlE1JXdWECPE/CdbM6nGurPyuDxQMgHws/UAcZTz7C |
+-----------+------------------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)

因为上面我们创建的chuyang账号的host是localhost所以只能在本地登陆,并不能进行远程登陆,如果要支持远程登陆,就需要加上具体的主机ip。
在这里插入图片描述

mysql> create user 'qfw'@'%' identified by '123456'; ---  % 表示匹配任何主机

在这里插入图片描述

删除用户

语法:

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

修改用户密码

  1. 使用alter修改秘密

ALTER USER语句是MySQL8.0及以上版本中用于更改用户密码的语句。具体语法格式如下

ALTER USER '用户名'@'主机名' IDENTIFIED BY '新密码';
mysql> alter user 'chuyang'@'localhost' identified by '654321';
Query OK, 0 rows affected (0.01 sec)
  1. 使用set修改密码

SET PASSWORD语句是MySQL5.7及以下版本用于更改用户密码的语句。具体语法格式如下

SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');
  1. 使用update修改密码

UPDATE语句可以通过直接更改MySQL系统表来更改用户密码。此方法可以应用于任何版本的 MySQL。具体语法格式如下:

UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='用户名' AND Host='主机名';

以上修改操会将 test 的用户名和连接主机为 localhost 的 MySQL 用户的密码修改为 newpassword。需要注意的是,更改mysql.user表中的数据后,需要通过以下命令刷新MySQL权限信息:

flush privileges;

数据库的权限

MySQL数据库提供的权限列表:
在这里插入图片描述

给用户权限

刚刚创建的用户是没有任何权限的,需要给用户赋值权限
语法:

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

说明:

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

案例:
在这里插入图片描述

查看特定用户所拥有的权限

语法:

show grants for '用户名'@'登陆位置';
mysql> show grants for 'chuyang'@'%';
+-------------------------------------------------------------+
| Grants for chuyang@%                                        |
+-------------------------------------------------------------+
| GRANT USAGE ON *.* TO `chuyang`@`%`                         |
| GRANT ALL PRIVILEGES ON `oracle_9i_test`.* TO `chuyang`@`%` |
+-------------------------------------------------------------+
2 rows in set (0.00 sec)

回收权限

语法:

revoke 权限列表 on.对象名 from '用户名'@'登陆位置';
mysql> revoke delete,insert on oracle_9i_test.* from 'chuyang'@'%';
Query OK, 0 rows affected (0.01 sec)

mysql> show grants for 'chuyang'@'%';
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for chuyang@%                                                                                                                                                                                                      |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `chuyang`@`%`                                                                                                                                                                                       |
| GRANT SELECT, UPDATE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `oracle_9i_test`.* TO `chuyang`@`%` |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

  • 16
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三问走天下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值