- 用户(user)
- 验证和授权
- 创建用户账户
- 连接服务器
- 查看用户账户设置
- 角色(role)
- 创建角色
- 操作用户帐户和角色
- 重命名
- 删除
- 感谢 💖
用户(user)
在MySQL中,用户是数据库访问的主要实体。每个用户都有自己的用户名和密码,用于验证和授权。通过合理的用户管理,可以控制谁能够访问数据库以及访问数据库的权限。
验证和授权
在连接到MySQL 服务器并执行查询时,会根据登录的用户来进行身份验证和活动授权。
- 验证。这一步是在连接层进行。是访问控制的第一个阶段。每次连接服务器的时候必须成功验证身份,否则无法连接,客户机将断开连接。
- 授权。这一步在SQL层进行。即在需要执行sql语句的时候需要验证该用户的权限。MySQL将确定这个用户要执行什么操作,是否有执行此操作所需的恰当权限。
创建用户账户
MySQL会为每个用户帐户提供一个用户和主机。
帐户名称的格式为 'username'@'hostname'
。其中单引号可以省略,但若是果用户名和主机名包含特殊字符(如破折号),则必须使用单引号将它们括起来。
示例:
- root@localhost
- reports_app@‘server-1’
- ‘%^&’@192.168.5.3
主机名称可以是我们自己设置的主机域名,也可以是IP地址。可以使用通配符(%匹配多字符而 _匹配单字符)。比如主机名为名’%’ 的帐户可以从任何主机连接。同时,如果在创建用户时未指定主机名,则 '%’ 为默认值。
注意:这里的主机名代表着用户从哪个客户机登录服务器。
我们可以使用用 CREATE USER...IDENTIFIED BY
语句建立一个帐户。
下面这个示例表示我们创建一个名为 webuser 的用户,这个用户将从 localhost 本机连接服务器,并且使用口令Abc123。
CREATE USER webuser@localhost IDENTIFIED BY 'Abc123';
连接服务器
我们使用 mysql -u username -h servername -ppassword
来连接服务器。
注意:这里必须提供要连接的服务器的主机名。
如果不指定服务器主机名,那么默认是localhost。
查看用户账户设置
我们可以查看mysql数据库中的user表。
下面这条语句将查看表中user、host、authentication_string这三个字段,分别代表着用户名、主机名、已经加密的口令。
注意:这里提到的主机名是用户所在的客户机的主机名,不是前面在连接时提到的服务器主机名。
SELECT user, host, authentication_string FROM mysql.user;
角色(role)
角色是一组权限的集合,它们可以用来简化权限管理并提高安全性。通过将权限分配给角色,然后将角色分配给用户,可以更方便地管理大量用户和权限设置。
在MySQL中,角色就类似于用户,因为角色也存储在mysql.user表中,角色名也由角色的名称和主机组成(‘rolename’@‘hostname’)。但是不同之处在于我们无法使用角色身份登录。
创建角色
我们可以使用CREATE ROLE
语句创建一个或多个角色。角色是被锁定的,也就是说无法登录,同时在创建的时候也没有口令。
比如下面这条语句将创建两个角色:r_admin 和 r_dev@localhost。
CREATE ROLE r_admin, r_dev@localhost;
和创建用户一样,如果省略主机名,默认为 '%‘。
操作用户帐户和角色
重命名
我们可以使用 RENAME USER
语句重命名用户帐户和角色。
示例:
RENAME USER consultant@laptop3 TO james@laptop3 , r_admin TO r_super;
可以只更改用户名或主机名部分,也可以同时更改。
删除
删除用户账户用 DROP USER
删除角色用 DROP ROLE
示例:
DROP USER james@laptop3;
DROP ROLE r_super, r_dev@localhost;
删除用户账户或角色意味着:
- 删除帐户或角色
- 撤销现有帐户或角色的所有权限
- 从存在的任何授权表中删除帐户的所有记录
感谢 💖
好啦,这次的分享就到这里,感谢大家看到这里🤞