#8203;MySQL中用户与权限的示例解析
发布时间:2022-01-11 14:16:15 所属栏目:MySql教程 来源:互联网
导读:小编给大家分享一下MySQL中用户与权限的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! MySQL用户与权限 在连接到 MySQL 服务器并执行查询时,会验证您的身份并
小编给大家分享一下MySQL中用户与权限的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! MySQL用户与权限 在连接到 MySQL 服务器并执行查询时,会验证您的身份并为您的活动授权。 l 验证:验证用户的身份。这是访问控制的第一个阶段。每次连接时都必须成功验证身份。如果验证失败,则无法连接,您的客户机将断开连接。 l 授权:验证用户的权限。这是访问控制的第二个阶段,面向针对成功验证了身份的活动连接的每个请求。对于每个请求, MySQL 将确定您要执行的操作,然后检查您是否有执行此操作所需的恰当权限。 通过查询mysql.user表可以查看用户权限等信息,例如: mysql> SELECT * FROM mysql.userG mysql> SELECT user, host, password FROM mysql.user WHERE user='root'; 在使用本机口令验证插件(mysql_native_password,默认的验证机制)连接到 MySQL 服务器时,会将指定的用户名、发出连接的主机以及口令与 mysql.user 表中的行进行匹配,以此确定您能否连接和执行操作。 要使用 mysql 客户机连接到本地服务器,请指定您要使用的帐户的用户名和口令: shell> mysql -u<username> -p<password> 请注意,与 mysql.user 表中您的用户关联的主机名是指发起连接的主机(而不是服务器主机)的名称。要连接到未在您客户机的本地主机上安装的服务器,请提供您要连接到的服务器的主机名: shell> mysql -u<username> -p<password> -h<server_host> 1.1. 创建用户与设置口令 1) 创建用户 提供每个用户帐户的用户和主机。例如,使用 CREATE USER...IDENTIFIED BY 语句 CREATE USER 'jim'@'localhost' IDENTIFIED BY 'Abc123'; 在创建帐户时避免可能的安全风险:不创建没有口令的帐户、不创建匿名帐户、在可能的情况下,避免在指定帐户主机名时使用通配符。 帐户名称包括用户名和用户必须从其连接到服务器的客户机主机的名称。帐户名称的格式为 'user_name'@'host_name'。用户名长度最多可以有 16 个字符。如果用户名和主机名包含特殊字符(如短划线),则必须将它们放在单引号中。如果某个值在不带引号时也有效,则引号是可选的。但是,在任何情况下都可使用引号。允许的主机名格式示例: • 主机名:localhost • 合格的主机名:'hostname.example.com' • IP 编号:192.168.9.78 • IP 地址:10.0.0.0/255.255.255.0 • 模式或通配符:% 或_ 用户名和主机名示例: • john@10.20.30.40 • john@'10.20.30.%' • john@'%.ourdomain.com' • john@'10.20.30.0/255.255.255.0' 另外,GRANT 语句也可创建新帐户或者修改现有帐户。具体参考“授予权限”。 2) 设置口令 设置MySQL 用户口令的方法有多种: – CREATE USER...IDENTIFIED BY – GRANT...IDENTIFIED BY – SET PASSWORD – mysqladmin password – UPDATE 授权表(不推荐) 为所有用户帐户分配唯一的强口令。 • 避免可以轻易猜测到的口令。 • 使用以下SELECT 语句可列出没有口令的所有帐户: SELECT Host,User FROM mysql.user WHERE Password = ''; • 确定重复口令: SELECT User FROM mysql.user GROUP BY password HAVING count(user)>1; • 让口令失效: ALTER USER jim@localhost PASSWORD EXPIRE; MySQL 使用多种算法对用户表中存储的口令加密: l mysql_native_password 插件实施标准口令格式: 41 字节宽的散列。 l mysql_old_password 插件实施较旧的格式,安全性较低, 16 字节宽。 l sha256_password 插件实施在安全计算中广泛采用的 SHA-256 散列算法。 old_passwords 系统变量的值指定 PASSWORD() 函数用于创建口令的算法,如下所示: :标准算法,与 MySQL 4.1.1 及更高版本中所用的算法相同 1:旧算法,与 MySQL 4.1.1 之前版本中所用的算法相同 2: SHA-256 算法 启动服务器时将 default-authentication-plugin 选项设置为 sha256_password,可将 SHA-256 口令用于所有新用户,也可使用 CREATE USER 和 IDENTIFIED WITH sha256_password 子句为特定用户指定 SHA-256 口令。有关 sha256_password 插件的进一步信息,请访问 http://dev.mysql.com/doc/refman/5.6/en/sha256-authentication-plugin.html 3) 管理用户 使用 RENAME USER 语句可重命名用户帐户,即更改现有帐户的帐户名称,更改帐户名称的用户名或主机名部分,或同时更改两者; mysql> RENAME USER 'jim'@'localhost' TO 'james'@'localhost'; 使用 DROP USER 语句可删除用户帐户;撤消现有帐户的所有权限,然后删除该帐户,同时从存在帐户的任何授权表中删除帐户的所有记录; mysql> DROP USER 'jim'@'localhost'; 4) 关于口令验证插件 A. 客户端明文验证插件 有些验证方式(如 PAM(Pluggable Authentication Module,可插入验证模块)验证)要求客户机向服务器发送纯文本口令,以便服务器处理普通形式的口令。mysql_clear_password 插件支持此行为。 MySQL 客户机库中有一个内置的明文验证插件mysql_clear_password。该插件可用于将纯文本口令发送给服务器,口令通常经过散列处理。 通过以下方式启用: 方式一:LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN 环境变量,在运行 MySQL 客户机应用程序(如 mysql 和mysqladmin)时指定 --enable-cleartext-plugin; 方式二:mysql_options() C API 函数的MYSQL_ENABLE_CLEARTEXT_PLUGIN 选项; B. 可载入验证插件 Ø test_plugin_server:实施本机和旧口令验证,此插件使用 auth_test_plugin.so 文件。测试验证插件 (test_plugin_server) 使用本机或旧口令验证进行身份验证,适用于测试和开发。 Ø auth_socket:仅允许通过 UNIX 套接字从具有相同名称的 UNIX 帐户登录的 MySQL 用户,此插件使用 auth_socket.so 文件。套接字对等凭证 (auth_socket) 插件允许用户仅在其 Linux sername 与其 MySQL帐户匹配时通过 UNIX 套接字文件连接。 Ø authentication_pam:允许使用外部验证机制登录,此插件使用 authentication_pam.so 文件。PAM 验证插件 (authentication_pam) 是一个企业版插件,允许使用外部验证机制登录。 MySQL 不存储您的口令,但使用 UNIX PAM(Pluggable Authentication Module,可插入验证模块)机制传输客户机提供的用户名和口令供操作系统进行验证。 (编辑:随州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |