第二十一天:MYSQL用户和权限管理
一、用户管理
1、相关数据库和表
元数据数据库:mysql 系统授权表:db, host, user,columns_priv, tables_priv, procs_priv, proxies_priv
2、用户帐号:
'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
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
RENAME USER old_user_name TO new_user_name;
5、删除用户:
DROP USER 'USERNAME'@'HOST'
6、修改密码:
注意:
新版mysql中用户密码可以保存在mysql.user表的authentication_string字段中
如果mysql.user表的authentication_string和password字段都保存密码,authentication_string优先生效
#方法1,用户可以也可通过此方式修改自已的密码 SET PASSWORD FOR 'user'@'host' = PASSWORD('password'); #MySQL8.0 版本不支持此方法, 因为password函数被取消 set password for root@'localhost'='123456' ; #MySQL8.0版本支持此方法,此方式直接将密码 123456加密后存放在mysql.user表的authentication_string字段
#方法2 ALTER USER test@'%' IDENTIFIED BY 'centos'; #通用改密码方法, 用户可以也可通过此方式修 改自已的密码,MySQL8 版本修改密码
#方法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;
忘记管理员密码的解决办法:
1. 启动mysqld进程时,为其使用如下选项:
--skip-grant-tables
--skip-networking
2. 使用UPDATE命令修改管理员密码
3. 关闭mysqld进程,移除上述两个选项,重启mysqld
二、权限管理
1、权限类别
管理类
程序类
数据库级别
表级别
字段级别
2、授权:GRANT
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
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level FROM user [, user] ...
4、查看指定用户获得的授权
Help SHOW GRANTS SHOW GRANTS FOR 'user'@'host'; SHOW GRANTS FOR CURRENT_USER[()];
5、
三、MySQL的图形化的远程管理工具
在MySQL数据库中创建用户并授权后,可以使用相关图形化工具进行远程的管理。
常见的图形化管理工具:
1、Navicat
2、SQLyog
3、DBeaver