一、MySQL用户管理
1. 修改用户密码
===root修改自己密码===
方法一:
# mysqladmin -uroot -p'123' password 'new_password' //123为旧密码
方法二:
mysql > UPDATE mysql.user SET authentication_string=password(‘new_password’)
WHERE user=’root’ AND host=’localhost’;
mysql > FLUSH PRIVILEGES;
方法三:
mysql > SET PASSWORD=password(‘new_password’);
===root修改其他用户密码===
方法一:
mysql > SET PASSWORD FOR user3@’localhost’=password(‘new_password’);
方法二:
mysql > UPDATE mysql.user SET authentication_string=password(‘new_password’)
WHERE user=’user3’ AND host=’localhost’;
mysql > FLUSH PRIVILEGES;
===普通用户修改自己密码===
mysql > SET password=password(‘new_password’);
===丢失root用户密码===
进入mysql的配置文件,在[mysqld]字段中添加skip-grant-tables,及取消mysql的root密码,保存并退出,重启mysql生效。
# vim /etc/my.cnf
[mysqld]
skip-grant-tables
# service mysqld restart
# mysql -uroot
mysql> UPDATE mysql.user SET authentication_string=password(‘new_password’)
WHERE user=’root’ AND host=’localhost’;
mysql> FLUSH PRIVILEGES;
2. 登录和退出MySQL
示例:
mysql -h192.168.5. -P -u root -p123 mysql -e ‘select user,host from user’
-h 指定主机名 【默认为localhost】
-P MySQL服务器端口 【默认3306】
-u 指定用户名 【默认root】
-p 指定登录密码 【默认为空密码】
此处mysql为指定登录的数据库
-e 接SQL语句
3. 创建用户
方法一:CREATE USER语句创建
CREATE USER user1@’localhost’ IDENTIFIED BY ‘123456’;
方法二: GRANT语句创建
GRANT ALL ON *.* TO 'user3'@’localhost’ IDENTIFIED BY ‘123456’;
FLUSH PRIVILEGES;
4. 删除用户
方法一:DROP USER语句删除
DROP USER 'user1'@’localhost’;
方法二:DELETE语句删除
DELETE FROM mysql.user WHERE user=’user2’ AND host=’localhost’;
FLUSH PRIVILEGES;
二、MySQL权限管理
1、权限应用的顺序:
user (Y|N) ==> db ==> tables_priv ==> columns_priv
2、语法格式:
grant 权限列表 on 库名.表名 to '用户名'@'客户端主机' [identified by '密码' with option参数];
==权限列表 all 所有权限 (不包括授权权限)
select,update
==数据库.表名 *.* 所有库下的所有表 Global level
web.* web 库下的所有表 Database level
web.stu_info web 库下的stu_info表 Table level
SELECT (col1), INSERT (col1,col2) ON mydb.mytbl Column level
==客户端主机 % 所有主机
192.168.2.% 192.168.2.0网段的所有主机
192.168.2.168 指定主机
localhost 指定主机
3、with_option参数
GRANT OPTION: 授权选项
MAX_QUERIES_PER_HOUR: 定义每小时允许执行的查询数
MAX_UPDATES_PER_HOUR: 定义每小时允许执行的更新数
MAX_CONNECTIONS_PER_HOUR: 定义每小时可以建立的连接数
MAX_USER_CONNECTIONS: 定义单个用户同时可以建立的连接数
4、Grant示例:
GRANT ALL ON *.* TO admin1@'%' IDENTIFIED BY '(dulingyu)';
GRANT ALL ON *.* TO admin2@'%' IDENTIFIED BY '(dulingyu)' WITH GRANT OPTION;
GRANT ALL ON bbs.* TO admin3@'%' IDENTIFIED BY '(dulingyu)';
GRANT ALL ON bbs.* TO admin3@'192.168.122.220' IDENTIFIED BY '(dulingyu)';
GRANT ALL ON bbs.user TO admin4@'%' IDENTIFIED BY '(dulingyu)';
GRANT SELECT(col1),INSERT(col2,col3) ON bbs.user TO admin5@'%' IDENTIFIED BY '(dulingyu)';
5、回收权限REVOKE
查看权限
SHOW GRANTS\G;
SHOW GRANTS FOR admin1@'%'\G;
回收权限REVOKE
语法:
REVOKE 权限列表 ON 数据库名 FROM 用户名@‘客户端主机’
示例:
REVOKE DELETE ON *.* FROM admin1@’%’; //回收部分权限
REVOKE ALL PRIVILEGES ON *.* FROM admin2@’%’; //回收所有权限
REVOKE ALL PRIVILEGES,GRANT OPTION ON *.* FROM 'admin2'@'%';
删除用户:
5.6 revoke all privilege drop user
5.7 drop user