作为一款成熟的数据库商业软件,用户的权限管理,应该是重要的功能之一,MySQL数据库提供了较高安全等级的权限控制,通过徐老师的这篇文章《MySQL用户管理——权限系统》,了解学习下。
用户管理是DBA的一项重要工作,DBA能够控制用户的活动,哪些事情可以做,哪些事情不能做。DBA需要为不同的用户和角色创建不同的权限,以适配各种用户的需求和使用范围,并尽可能避免使用"root"用户,以防止应用程序受损或者在日常运维中出现错误。此外,DBA需要通过正确分配个人用户权限来确保数据完整性,允许授权用户执行工作,防止未经授权的用户访问超越权限的数据。
MySQL的这些权限管理功能设计,我们开发应用时,都可以借鉴参考。
认证和授权
Authentication和Authorization这两个单词令人经常混淆,认证和授权。当用户连接MySQL服务器,执行查询时,需要验证用户身份,并验证用户权限,换句话来说,需要验证正确的用户身份,并验证用户的权限,决定是否允许用户连接服务器,执行相关查询。
认证:验证用户的身份,这是访问控制的第一步,用户在每次连接时,需要成功认证,如果认证失败,则连接失败,客户端断开连接。
授权:验证用户的权限,这是访问控制的第二步,适用于所有经过用户身份验证的连接,MySQL将决定用户可以执行什么操作,用户是否有充足的权限去执行该操作。
DBA可以通过mysql数据库的user表查看认证信息,每一行表示一个独立的用户账户。"User"字段表示用户的名称,"Host"字段表示连接用户的DNS主机名或IP地址,"Authentication_string"字段是用户经过加密的密码。
MySQL localhost:3309 ssl SQL > SELECT user,host, authentication_string from mysql.userG
*************************** 1. row ***************************
user: root
host: %
authentication_string: $A$005$JYU"hj1t+19gmd8BBOPNP45qwC5TQ5APJLGzTa991eiab0f1Qwu0
*************************** 2. row ***************************
user: mysql.infoschema
host: localhost
authentication_string: $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED
认证插件
MySQL从8.0开始使用"caching-sha2_password"作为默认的认证插件,连接时需要使用用户名、密码,及客户端的主机名验证用户。注意,连接服务器时,需要在客户端指定服务器的主机名。在服务器添加用户时,需要指定客户端的主机名。
关于caching-sha2_password这个插件的内容,可以参考历史的文章,《MySQL的caching_sha2_password报错的解决》
《MySQL新身份验证插件caching_sha2_password》本地连接
使用mysql客户端连接本地服务器时指定用户名和密码,
mysql -u username -ppassword
注意,-p后面直接输入密码,无空格。
默认的主机名为"localhost",用于标识类Unix系统的socket连接,如果指定连接选项"--protocol=TCP"或者使用"-h 127.0.0.1"则通过TCP/IP进行连接。
远程连接
如果用户需要从一个远程客户端连接mysql服务器,需要在连接时指定客户端所在的主机名(不是MySQL服务器主机名,mysql.user表中的客户端名称)。
mysql -u username -ppassword -h servername
如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发pyq,
近期更新的文章:《全面提升思考、表达和解决问题能力的一个神奇原理介绍》《MySQL中Performance Schema和锁》《Oracle备份与恢复常见但难解决的15个问题》
《MySQL常用监控指标学习了解》
《一招解决MySQL中DDL语句被阻塞的问题场景》
近期的热文:《推荐一篇Oracle RAC Cache Fusion的经典论文》
《"红警"游戏开源代码带给我们的震撼》
文章分类和索引:《公众号1300篇文章分类和索引》