版本说明
以下命令使用MySQL5.7版本实验验证
1. 创建mysql用户
## username为要创建的用户登录账号,you password为用户的登录密码
CREATE USER username IDENTIFIED BY 'you password';
2. 创建用户后使用以下命令查看所有用户
SELECT user, host, authentication_string FROM mysql.user;
user表示已存在的用户,host表示分配的主机地址,只有ip为指定地址的才可以登录,创建用户时默认host=%,%表示所有地址用户均可链接
3. 一般情况下,只能允许特定的ip地址登录数据库,防止数据泄露和被入侵,使用以下命令删除用户登录权限
## 表示删除test用户的%主机地址权限,删除该记录后test用户将不能再登录,需要其他有权限执行命令和登录的用户重新给此用户授权,root用户谨慎操作,以防root账户所有权限被删除
## %可以替换为其他指定ip主机地址
DROP USER 'test'@'%';
DROP USER 'test'@'localhost';
4. 创建、修改、删除用户或用户权限之后都需要执行以下命令刷新
FLUSH PRIVILEGES;
5. 使用其他有执行新增修改权限命令的用户,如root,执行以下命令重新给test账户授权
## 这个命令将授予 'test'@'localhost' 用户对所有数据库的所有权限,you password替换为要登录的密码
GRANT ALL PRIVILEGES ON . TO 'test'@'localhost' IDENTIFIED BY 'you password' WITH GRANT OPTION;
## 这个命令将授予 'test'@'localhost' 用户sys数据库的所有权限,you password替换为要登录的密码
GRANT ALL PRIVILEGES ON sys.* TO 'test'@'localhost' IDENTIFIED BY 'you password' WITH GRANT OPTION;
## 这个命令将授予 'test'@'localhost' 用户sys,testdb数据库的所有权限,you password替换为要登录的密码
GRANT ALL PRIVILEGES ON sys.*, testdb.* TO 'test'@'localhost' IDENTIFIED BY 'you password' WITH GRANT OPTION;
## GRANT: 这是MySQL的一个命令,用于赋予用户特定的权限。
## ALL PRIVILEGES: 这是指所有的权限。在MySQL中,权限可以包括如SELECT,INSERT,UPDATE,DELETE等。
## ON sys.*: 这是指定了授权的数据库或表。在这里,sys.*表示所有在sys数据库下的表。如果你要指定特定的表,可以替换为sys.table_name。
## TO 'test'@'localhost': 这是指要将权限赋予的用户。在这个例子中,用户名为'test',该用户只能从本地主机连接到数据库('localhost')。
## IDENTIFIED BY 'you password': 这是设置用户的密码。用户在连接到数据库时需要提供这个密码。
## WITH GRANT OPTION: 这是一个选项,表示这个用户还可以将他们得到的权限授予其他用户。这被称为"授权权限"。
6. 撤销用户权限
REVOKE ALL PRIVILEGES ON . FROM 'test'@'localhost';
## REVOKE: 这是MySQL的一个命令,用于撤销用户权限。
## ALL PRIVILEGES: 这是指定了撤销的权限类型。在这个例子中,它表示所有的权限。
## ON .: 这是指定了撤销权限的数据库或表。在这里,*.* 表示所有的数据库和表。
## FROM 'test'@'localhost': 这是指定了要撤销权限的用户。在这个例子中,用户名为 'test',该用户只能从IP地址localhost连接到数据库。