第二十一天:MYSQL用户和权限管理
一、用户管理
1、相关数据库和表
1 2 | 元数据数据库:mysql 系统授权表:db, host, user ,columns_priv, tables_priv, procs_priv, proxies_priv |
2、用户帐号:
1 2 3 4 5 6 7 | 'USERNAME' @ 'HOST' @ 'HOST' : 主机名: user1@ 'web1.magedu.org' IP地址或Network 通配符: % _ 示例:wang@ '172.16.%.%' user2@ '192.168.1.%' mage@ '10.0.0.0/255.255.0.0' |
3、创建用户:CREATE USER
1 2 3 4 | CREATE USER 'USERNAME' @ 'HOST' [IDENTIFIED BY 'password' ]; #示例: create user test@ '10.0.0.0/255.255.255.0' identified by '123456' ; create user test2@ '10.0.0.%' identified by 123456; |
4、用户重命名:RENAME USER
1 | RENAME USER old_user_name TO new_user_name; |
5、删除用户:
1 | DROP USER 'USERNAME' @ 'HOST' |
6、修改密码:
注意:
新版mysql中用户密码可以保存在mysql.user表的authentication_string字段中
如果mysql.user表的authentication_string和password字段都保存密码,authentication_string优先生效
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #方法1,用户可以也可通过此方式修改自已的密码 SET PASSWORD FOR 'user' @ 'host' = PASSWORD ( 'password' ); #MySQL8.0 版本不支持此方法, 因为 password 函数被取消 set password for root@ 'localhost' = '123456' ; #MySQL8.0版本支持此方法,此方式直接将密码 123456加密后存放在mysql. user 表的authentication_string字段<br> #方法2 ALTER USER test@ '%' IDENTIFIED BY 'centos' ; #通用改密码方法, 用户可以也可通过此方式修 改自已的密码,MySQL8 版本修改密码<br> #方法3 此方式MySQL8.0不支持,因为 password 函数被取消 UPDATE mysql. user SET password = PASSWORD ( 'password' ) WHERE clause; #mariadb 10.3 update mysql. user set authentication_string= password ( 'ubuntu' ) where user = 'mage' ; #此方法需要执行下面指令才能生效: FLUSH PRIVILEGES ;<br> |
忘记管理员密码的解决办法:
1. 启动mysqld进程时,为其使用如下选项:
--skip-grant-tables
--skip-networking
2. 使用UPDATE命令修改管理员密码
3. 关闭mysqld进程,移除上述两个选项,重启mysqld
二、权限管理
1、权限类别
管理类
程序类
数据库级别
表级别
字段级别
2、授权:GRANT
1 2 3 4 5 6 7 8 9 10 11 | GRANT priv_type [(column_list)],... ON [object_type] priv_level TO 'user' @ 'host' [IDENTIFIED BY 'password' ] [ WITH GRANT OPTION ]; priv_type: ALL [ PRIVILEGES ] object_type: TABLE | FUNCTION | PROCEDURE priv_level: *(所有库) |*.* | db_name.* | db_name.tbl_name | tbl_name(当前库的 表) | db_name.routine_name(指定库的函数,存储过程,触发器) with_option: GRANT OPTION | MAX_QUERIES_PER_HOUR count | MAX_UPDATES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count |
3、 取消权限:REVOKE
1 2 | REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level FROM user [, user ] ... |
4、查看指定用户获得的授权
1 2 3 | Help SHOW GRANTS SHOW GRANTS FOR 'user' @ 'host' ; SHOW GRANTS FOR CURRENT_USER [()]; |
5、
三、MySQL的图形化的远程管理工具
在MySQL数据库中创建用户并授权后,可以使用相关图形化工具进行远程的管理。
常见的图形化管理工具:
1、Navicat
2、SQLyog
3、DBeaver
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步