数据库用户管理

数据库用户管理

一、创建:

1.新建用户:

CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];

'用户名':指定将创建的用户名.

'来源地址':指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录,可用通配符%

'密码':若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密;若使用加密密码,需要先使用SELECT PASSWORD('密码');获取密文,再在语句中添PASSWORD '密文';若省略"IDENTIFIED BY"部分,则用户的密码将为空(不建议使用)

mysql> create user 'wang'@'192.168.174.15' identified by '123123';
Query OK, 0 rows affected (0.00 sec)

mysql> select password ('123123');
+-------------------------------------------+
| password ('123123')                       |
+-------------------------------------------+
| *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |
+-------------------------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> 

2.查看用户信息:

(1)创建后的用户保存在mysql 数据库的user表里:

mysql> use mysql;
Database changed
mysql> select user,authentication_string,host from user;
+---------------+-------------------------------------------+----------------+
| user          | authentication_string                     | host           |
+---------------+-------------------------------------------+----------------+
| root          | *6691484EA6B50DDDE1926A220DA01FA9E575C18A | localhost      |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost      |
| mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost      |
| wang          | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 | 192.168.174.15 |
| riky          | *ECB7B63F43CDAAF45A9AA640809447642DB634B8 | 192.168.174.15 |
+---------------+-------------------------------------------+----------------+
5 rows in set (0.00 sec)

(2)重命名指定:

rename user 'billkin'@'localhost' to 'pp'@'localhost';

(3)删除用户:

drop user 'pp'@'localhost';

(4)修改当前用户密码:

set password=password('abc123');
Query OK, 0 rows affected, 1 warning (0.00 sec)

(5)修改其他用户密码:

set password for 'riky'@'192.168.174.15'=password('abc123');
  • 忘记root密码的解决办法:

  • 修改/etc/my.cnf 配置文件,免密登陆mysql

    vim /etc/my.cnf
    [mysqld]
    skip-grant-tables    #添加,使登录mysql不使用授权表
    systemctl restart mysqld
    
  • mysql #直接登录,然后使用SQL语句修改密码

    UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('abc123') where user='root';
    FLUSH PRIVILEGES;
    quit
    mysql -u root -pabc123
    PS:最后再把/etc/my.cnf 配置文件里的skip-grant-tables 删除,并重启mysql服务
    

3.数据库用户授权:

(1)授予权限:

grant 提权
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];
grant all privileges on exo.phuket to 'wang'@'%' identified by 'abc123';

#权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如"select, insert, update"。使用"all"表示所有权限,可授权执行任何操作。

#数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符"*"。例如,使用"exo.*"表示授权操作的对象为school数据库中的所有表。

#'用户名@来源地址':用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP地址,还可以使用"%"通配符,表示某个区域或网段内的所有地址,如"%.exo.com"、"192. 168.174.%"等。

#IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略"IDENTIFIED BY"部分,则用户的密码将为空。

#允许用户billkin在本地查询phuket数据库中所有表的数据记录,但禁止查询其他数据库中的表的记录。
grant select on phuket.* to 'riky'@'localhost' IDENTIFIED BY 'abc123';

(2)允许用户wang在所有终端远程连接mysql,并拥有所有权限。

grant all privileges on *.* to 'wang'@'%' identified by 'abc123';

flush privileges;    #刷新权限
quit

mysql -u wang -pabc123
use exo;
show tables; .
select * from phuket;

(3)查看权限:

mysql -u wang -pabc123
SHOW GRANTS FOR 用户名@来源地址;
show grants for 'wang'@'%';
+------------------------------------------------------+
| Grants for wang@%                                    |
+------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'wang'@'%'            |
| GRANT ALL PRIVILEGES ON "exo"."phuket" TO 'wang'@'%' |
+------------------------------------------------------+
2 rows in set (0.00 sec)

(4)撤销权限:

REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址;
mysql> revoke all on *.* from 'wang'@'%';
Query OK, 0 rows affected (0.01 sec)

mysql> show grants for 'wang'@'%';
+------------------------------------------------------+
| Grants for wang@%                                    |
+------------------------------------------------------+
| GRANT USAGE ON *.* TO 'wang'@'%'                     |
| GRANT ALL PRIVILEGES ON "exo"."phuket" TO 'wang'@'%' |
+------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye
  • 用用户wang账号登陆MySQL,测试权限是否被撤销:

(5)授权用户权限 all privileges 代表了哪些权限:

insert(插入数据)

select(查询数据)

update(更新表的数据)

delete (删除表中的数据)

drop (删除库 和表)

create (创建库,表)

index (创建索引)

alter (更改表的属性)

create view (创建视图)

create routine (创建存储过程)

alter routine (修改存储过程)

event (事件)

trigger on (创建触发器)

二、总结:

数据库用户管理权限是指在数据库系统中授权用户访问和管理数据库的权限,对于企业来说是非常重要的。以下是数据库用户管理权限的重要性:

  1. 数据保密性:对于用户管理权限进行精细的控制可以提高数据的保密性。通过对用户进行分组授权,可以将敏感数据的访问权限限制在需要访问的人员范围内。
  2. 数据可用性:通过对用户进行授权,可以保证用户仅能访问其所需的数据,而不会破坏其他数据的稳定性和完整性。同时,可以通过授权限制用户的访问频率以及数据的查询范围,从而避免系统崩溃和数据丢失等问题。
  3. 数据完整性:通过对用户进行精细的控制,可以保证数据完整性。例如,通过设置字段约束、验证规则和触发器等,可以保证在数据插入、修改或删除时数据的准确性。
  4. 数据安全性:通过对用户进行授权和管理,可以保证数据的安全性。例如,可以对登陆、访问或执行某些敏感操作需要口令验证和密码策略等。
  5. 合规性:对于一些特殊行业来说,例如金融业、医疗业等,有一些合规要求需要对数据进行严格的管控。通过对用户进行细致的权限分配和控制,可以避免系统漏洞或数据泄露等问题,满足合规性要求。

,通过设置字段约束、验证规则和触发器等,可以保证在数据插入、修改或删除时数据的准确性。

  1. 数据安全性:通过对用户进行授权和管理,可以保证数据的安全性。例如,可以对登陆、访问或执行某些敏感操作需要口令验证和密码策略等。

  2. 合规性:对于一些特殊行业来说,例如金融业、医疗业等,有一些合规要求需要对数据进行严格的管控。通过对用户进行细致的权限分配和控制,可以避免系统漏洞或数据泄露等问题,满足合规性要求。

相关推荐
番茄电脑全能王3 分钟前
《鸣潮》运行时提示找不到emp.dll是什么原因?缺失emp.dll文件要怎么解决?
网络·数据库·经验分享·游戏·电脑
上海运维Q先生8 分钟前
面试题整理13----deployment和statefulset区别
运维·面试·kubernetes
s_daqing1 小时前
华为手机建议使用adb卸载的app
adb·华为·智能手机
一只淡水鱼661 小时前
【mybatis】基本操作:详解Spring通过注解和XML的方式来操作mybatis
java·数据库·spring·mybatis
张声录11 小时前
【ETCD】【实操篇(十六)】基于角色的访问控制:ETCD 安全管理指南
数据库·安全·etcd
warrah1 小时前
redis——岁月云实战
数据库·redis·缓存
秀儿y1 小时前
Redis-十大数据类型
数据库·redis·缓存·oracle
凡人的AI工具箱1 小时前
每天40分玩转Django:Django类视图
数据库·人工智能·后端·python·django·sqlite
路在脚下@2 小时前
MySQL的索引失效的原因有那些
数据库·mysql
凡人的AI工具箱2 小时前
每天40分玩转Django:实操图片分享社区
数据库·人工智能·后端·python·django