一、实验目的:
(1) 理解My SQL的权限系统的工作原理。
(2) 理解My SQL账户及权限的概念。
(3) 掌握管理My SQL账户和权限的方法。
(4) 学会创建和删除普通用户的方法和密码管理的方法。
(5) 学会如何进行权限管理。
二、验证性实验
实验任务如下:
(1) 使用root用户创建Testuser1用户,初始密码设置为123456。让该用户对所有数据库拥有SELECT、CREATE、DROP权限。
CREATE USER 'Testuser1'@'localhost' IDENTIFIED BY '123456';
GRANT SELECT,CREATE,DROP ON *.* TO 'Testuser1'@'localhost';
(2) 创建Testuser2用户,该用户没有初始密码。
CREATE USER 'Testuser2'@'localhost';
-
'Testuser2'@'localhost'
是一个完整的用户标识符。这个标识符由两部分组成:用户名和主机名 localhost
表示此用户只能从本地主机连接到 MySQL 服务器。这是一个特殊的主机名,代表本地连接或者通过 Unix 套接字连接。这意味着只有在 MySQL 服务器运行在相同的机器上并且客户端也在该机器上时,这个用户才能进行连接。- 用通配符
%
Testuser2@'%'
允许 Testuser2 用户从任何主机连接到 MySQL 服务器。
(3) 用Testuser2用户登录,将其密码修改为000000。
ALTER USER 'Testuser2'@'localhost' IDENTIFIED BY '000000';
(4) 用Testuser1用户登录,为Testuser2用户设置CREATE和DROP权限。
GRANT CREATE, DROP ON *.* TO 'Testuser2'@'localhost';
(5) 用Testuser2用户登录,验证其拥有的CREATE和DROP权限。
SHOW GRANTS FOR 'Testuser2'@'localhost';
(6) 用root用户登录,收回Testuser1用户和Testuser2用户的所有权限。
REVOKE ALL PRIVILEGES ON *.* FROM 'Testuser1'@'localhost';
REVOKE ALL PRIVILEGES ON *.* FROM 'Testuser2'@'localhost';
FLUSH PRIVILEGES;
-
FLUSH PRIVILEGES;
是一个MySQL语句,用于重新加载授权表中的权限内容,确保当前的权限更改立即生效。当对用户的权限进行了修改后,使用FLUSH PRIVILEGES;
可以使修改立即生效,而无需重启MySQL服务器。在执行诸如创建、修改或删除用户以及赋予或撤销用户权限等操作后,通过执行FLUSH PRIVILEGES;
可以确保数据库立即应用最新的权限设置。
(7) 删除Testuser1用户和Testuser2用户。
DROP USER Testuser1@localhost,Testuser2@localhost;
三、观察与思考
新创建的MySQL用户能否在其他机器上登录MySQL数据库?
答:
新创建的MySQL用户默认情况下无法在其他机器上登录MySQL数据库。这是因为MySQL用户的登录受到多种限制,包括来自特定主机的访问权限。默认情况下,新创建的MySQL用户只能从本地主机(localhost)登录MySQL数据库。
但是要允许新创建的MySQL用户在其他机器上登录MySQL数据库,可以授予远程访问权限,授予新用户从指定主机的访问权限。
GRANT ALL PRIVILEGES ON *.* TO 'new_user'@'remote_host' IDENTIFIED BY 'password';