用户管理
一、用户信息
MySQL中的用户都存储在系统数据库mysql 的user表中;
关键字段,User(用户名),Host(允许用户从哪一个主机进行登录),authentication_string(存放着当前用户对应的登陆密码),_priv(表示某种权限);
换句话说,对MySQL进行用户管理如增删改,就是对user表进行修改;
二、用户管理相关SQL
2.1创建用户
创建完新用户,并且要刷新特权;将登陆主机设置成%表示允许以任意主机的方式进行登录;
mysql
create user '用户名'@'登陆主机/ip' identified by '密码';
flush privileges;
当显示密码政策不支持时,进行如下操作;
mysql
show variables like 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
mysql
set global validate_password_policy=low;
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
当远端用户登录不支持时,在/etc/my.cnf文件中添加skip_ssl;进行远端登录必须保证服务端内部配置了允许远端登录的账号,另外不建议将云服务器的mysqld的端口号暴露到公网中;
MySQL主要是在内网环境中进行访问;
2.2删除用户
mysql
drop user '用户名'@'登陆主机/ip';
2.3修改用户密码
方式一:自己修改自己的密码;
mysql
set password=password('密码');
方式二:root用户可以修改其他人密码,也支持自己修改自己的密码;
mysql
set password for '用户名'@'主机名'=password('新密码');
三、权限管理
3.1给用户进行授权
mysql
grant 权限列表(一个或者是多个权限,用,隔开) on 库.对象名(数据库.表/视图存储过程,*.*表示所有数据库的所有对象,库.*表示某个数据库的所有对象) to '用户名'@'主机名' 可以加设计密码但是不建议使用;
mysql
grant all on...#表示给赋予所有的权限;
3.2查看给某一个用户的权限
mysql
show grants for '用户名'@'主机名';
------------------------------------------------------+
| Grants for dyh@% |
+------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dyh'@'%' |
| GRANT ALL PRIVILEGES ON `rootDB`.`user` TO 'dyh'@'%' |
+------------------------------------------------------+
3.3回收用户权限
mysql
revoke 权限列表 on 库.对象名 from '用户名'@'主机名';