用户与权限管理
学习再总结宋红康老师课程内容
1.用户管理
MySQL用户可以分为普通用户和root用户。root用户是超级管理员,拥有所有权限,包括创建用户、删除用户和修改用户的密码等管理权限;普通用户只拥有被授予的各种权限。
MySQL提供了许多语句用来管理用户账号,这些语句可以用来管理包括登录和退出MySQL服务器、创建用户、删除用户、密码管理和权限管理等内容。
MySQL数据库的安全性需要通过账户管理来保证
1.1登录MySQL服务器
启动MySQl服务后,可以通过mysql命令来登录MySQL服务器,命令如下:
mysql -h hostname|hostIP -P port -u username -p DatabaseName -e "SQL语句"
参数解释:
- -h参数后面接主机名或者主机IP,hostname为主机。hostIP为主机IP。
- -P参数后面接MySQL服务的端口,通过该参数连接到指定的端口。MySQL服务的默认端口为3306,不适应该参数时自动连接到3306端口,port为连接的端口号。
- -u参数后面接用户名,username为用户名。
- -p参数会提示输入密码。
- DatabaseName参数指明登录到哪一个数据库中。如果没有该参数,就会直接登录到MySQL数据库中,然后可以使用USE命令来选择数据库。
- -e参数后面可以直接加SQL语句。登录MySQL服务器以后即可执行这个SQL语句,然后退出MySQL服务器。
1.2创建用户…
CREATE USER语句的基本语法形式如下:
CREATE USER 用户名 [IdENIFIED BY '密码'][,用户名 [IDENIFIED BY '密码']];
1.3修改用户…
修改用户名:
1.4删除用户…
在MySQL数据库中,可以使用DROP USER语句来删除普通用户,也可以直接在mysql.user表中删除用户。
方式1:使用DROP方式删除(推荐)
方式1:使用DELETE方式删除(不推荐)
1.5设置当前用户密码
适用于root用户修改自己的密码,以及普通用户登录后修改自己的密码。
root用户拥有很高的权限,因此必须保证root用户的密码安全。root用户可以通过多种方式来修改密码,使用ALTER USER修改用户密码是MySQL 官方推荐的方式。此外,也可以通过SET语句修改密码。由于MySQL8中已移除了PASSWORD()函数,因此不再使用UPDATE语句直接操作用户表修改密码。
旧的写法如下:
# 修改当前用户的密码:(MySQL5.7测试有效)
SET PASSWORD = PASSWORD('123456');
这里介绍推荐的写法:
1.使用ALTER USER命令来修改当前用户密码
用户可以使用ALTER命令来修改自身密码,如下语句代表修改当前登录用户的密码。基本语法如下:
ALTER USER USER()IDENTIFIED BY '新密码';
2.使用SET语句来修改当前密码
使用root用户登录MySQL后,可以使用SET语句来修改密码,具体SQL语句为:
SET PASSWORD='新密码';
该语句会自动将密码加密后再赋给当前用户。
1.6修改其他用户密码
root用户不仅可以修改自己的密码,还可以修改其他普通用户的密码。root用户登录MySQL服务器后,可以通过ALTER语句和SET语句来修改普通用户的密码。由于PASSWORD()函数已移除,因此使用UPDATE直接操作用户表的方式已不再使用。
1.使用ALTER语句来修改普通用户的密码
语法基本形式如下:
ALTER USER user [IDENTIFIED BY '新密码'][,user[IDENTIFIED BY '新密码']]...;
其中user参数表示新用户的账户,由用户名和主机名构成;“IDENTIFIED BY”关键字用来设置密码。
2.使用SET命令来修改普通用户密码
使用root用户登录到MySQL服务器后,可以使用SET语句来修改普通用户的密码。SET语句的代码如下:
SET PASSWORD FOR 'username'@'hostname'='new_password';
其中,username参数是普通用户的用户名;hostname参数是普通用户的主机名;new_password是新密码。
3.使用UPDATE语句修改普通用户的密码(不推荐)
使用root用户登录到MySQL服务器后,可以使用UPDATE语句修改MySQL数据库的user表的password字段,从而修改普通用户的密码。使用UPDATE语句修改用户密码的语法如下:
UPDATE MySQL.user SET authentication_string=PASSWORD("123456")
WHERE User = "username" AND Host = "hostname";
1.7MySQL8密码管理(了解)…
MySQL中记录使用过的历史密码,目前包含如下密码管理功能:
(1)密码过期:要求定期修改密码。
(2)密码重用限制:不允许使用旧密码。
(3)密码强度评估:要求使用高强度的密码。
1.密码过期策略
2.密码重用策略
2.权限管理
关于MySQL的权限简单的理解就是MySQL允许你做你权力以内的事情,不可以越界。比如只允许你执行SELECT操作,那么及你就不能执行UPDATE操作。只允许你从某台机器上连接MySQL,那么你就不能从除了那台机器以外的其他机器连接MySQL。
2.1权限列表…
MySQL的权限:
SHOW privilige;
2.2授予权限的原则
权限控制主要是出于安全因素因此需要遵循以下几个经验原则:
1、只授予能满足需要的最小权限,防止用户干坏事。
2、创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。
3、为每个用户设置满足密码复杂度的密码。
4、定期清理不需要的用户,回收权限或者删除用户。
2.3授予权限…
给用户授权的方式有两种,赋不上通过把角色赋予用户给用户授权和直接给用户授权。
2.4查看权限…
2.5收回权限…
3.权限表
4.访问控制(了解)
5.角色管理
6.配置文件的使用
6.1配置文件格式
与在命令行中指定启动选项不同的是,配置文件中的启动选项