前言
2022/7/28 18:15
暑假学习ing
推荐
【MySQL数据库教程天花板,mysql安装到mysql高级,强!硬!-哔哩哔哩】
第03章 用户和权限管理
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语句"
mysql -h localhost -P 3306 -p dbtest1 -e "select * from emp1;"
查看用户
use mysql;
select * from user \G;
select host,user from user;
1.2 创建用户
在MySQL数据库中,官方推荐使用CREATE USER语句创建新用户。MySQL8版本移除了PASSWORD加密方法,因此不再推荐使用INSERT语句直接操作MySQL中的user表来增加用户。
使用CREATE USER语句来创建新用户时,必须拥有CREATE USER权限。每添加一个用户,CREATEUSER语句会在 MySQL.user表中添加一条新记录,但是新创建的账户没有任何权限。如果添加的账户已经存在,CREATEUSER语 句就会返回一个错误。
CREATE USER语句的基本语法形式如下:
CREATE USER 用户名 [IDENTIFIED BY '密码'][,用户名[IDENTIFIED BY '密码']];
用户名参数表示新建用户的账户,由用户(User)和主机名(Host)构成;
“[]”表示可选,也就是说,可以指定用户登录时需要密码验证,也可以不指定密码验证,这样用户可以直接登录。不过,不指定密码的方式不安全,不推荐使用。如果指定密码值,这里需要使用IDENTIFIED BY指定明文密码值。
CREATE USER语句可以同时创建多个用户。
举例:
create user 'zhang3' identified by 'abc123';
再次创建,会报错,已有用户。
create user 'zhang3'@'localhost' identified by 'abc123';
可以看出:user的主键是user和localhost的联合主键
测试登录:
默认的权限有限
只有登录权限。
再举例:
1.3 修改用户
修改用户名:
UPDATE mysql.user SET USER='wang5' WHERE USER='li4' and host='%'; # 一定进行的操作 FLUSH PRIVILEGES;
1.4 删除用户
方式1:使用DROP方式删除(推荐)
可以同时删除好多。
默认删除host=%
drop user 'wang5';
方式2:使用DELETE方式删除
delete from user where user ='zhang3' and host = '%';
直接删除user表中的记录,可能会有残留,不推荐
1.5 设置当前用户密码
适用于root用户修改自己的密码,以及普通用户登录后修改自己的密码。
root用户拥有很高的权限,因此必须保证root用户的密码安全。root用户可以通过多种方式来修改密码,使用 ALTER USER修改用户密码是MySQL官方推荐的方式。此外,也可以通过SET语句修改密码。由于MySQL8中已移除了PASSWORD()函数,因此不再使用UPDATE语句直接操作用户表修改密码。
旧的写法如下:
#修改当前用户的密码:(MySQL5.7测试有效) SET PASSWORD = PASSWORD('123456')I
这里介绍推荐的写法
:
1.使用ALTER USER命令来修改当前用户密码
用户可以使用ALTER命令来修改自身密码,如下语句代表修改当前登录用户的密码。基本语法如下:
ALTER USER USER() IDENTIFIED BY 'new_password';
练习:下面使用ALTER命令来修改root用户的密码,将密码改为“Hello_1234”。命令如下:
ALTER USER USER() IDENTIFIED BY 'Hello_1234';
2.使用SET语句来修改当前用户密码
使用root用户登录MySQL后,可以使用SET语句来修改密码,具体SQL语句如下:
SET PASSWORD='new_password';
该语句会自动将密码加密后在赋给当前用户。
练习:下面使用ALTER命令来修改root用户的密码,将密码改为“Hello_1234”。SET语句具体如下:
SET PASSWORD= 'Hello_1234';
说明:加密
mysql> use mysql; Database changed mysql> desc user;
select host,user,authentication_string from user;