携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情
前言
上篇我们学习完了MySQL中的数据目录。有兴趣的小伙伴可以阅读(# MySQL学习-数据目录(二))。
下面我们继续学习MySQL中的用户管理。
用户管理
MySQL的用户分为普通用户和root用户。root用户是超级管理员,拥有所有权限,包括创建用户,删除用户和修改用户的密码等权限。普通用户只拥有被授权的权限。
登录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服务器。
创建用户
语法如下:
CREATE USER 用户名 [IDENTIFIED BY '密码'][, 用户名 [IDENTIFIED BY '密码']];
- 用户名参数表示新建用户的账户,有用户和主机名构成。
- []参数表示可选,可以指定用户登录时需要密码验证,也可以不指定密码验证,这样用户可以直接登录。不过,不指定密码的方式不安全,不推荐使用。如果指定密码值,这里需要使用IDENTIFIED BY指定明文密码值。
- CREATE USER支持同时创建多个用户。
CREATE USER xiaozhang IDENTIFIED BY '123123';# 默认host是%
修改用户
语法如下:
UPDATE mysql.user SET USER='xiaozhang1' WHERE USER='xiaozhang';
FLUSH PRIVILEGES;
删除用户
方式一: 使用DROP方式删除,使用此方式时,必须拥有DROP USER权限。语法如下:
DROP USER user[,user]...;
举例:
DROP USER xiaozhang1;
方式二: 使用DELETE方式删除
DELETE FROM mysql.user WHERE HOST='hostname' AND User='username';
#执行完DELETE指令,需要使用FLUSH指令使用户生效
FLUSH PRIVILEGES;
注意: 不推荐使用DELETE方式删除,这种方式系统会有残留信息保留。而DROP指令会删除用户以及对应的权限,执行命令后会发现mysql.user表和mysql.db表的记录都消失了。
今天先学习到这里,明天继续。