mysql用户管理
一直以来都依赖phpmyadmin,现在感觉不能再依赖他了,感觉用户管理这块一直欠缺,今天好好整理了一下.
use mysql
修改密码
# mysql5
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
ALTER USER root@'localhost' IDENTIFIED BY '123456';
UPDATE user SET Password=PASSWORD('newpwd') WHERE User='test' and Host='localhost';
shell# mysqladmin -u root password 123456
# mysql8
alter user 'root'@'localhost' identified with mysql_native_password by '123456';
# select host, user, plugin, authentication_string from mysql.user;
忘记密码
mysqld_safe --skip-grant-tables
mysql -u root -p mysql
FLUSH PRIVILEGES;
SET PASSWORD FOR root@'localhost' = password('123456');
ALTER USER root@'localhost' IDENTIFIED BY '123456';
创建用户
CREATE USER 'dotcoo'@'192.168.1.101' IDENTIFIED BY 'p4ssword';
GRANT 语法
GRANT 权限 ON 数据库.表名 TO '用户名'@'主机地址' [ IDENTIFIED BY '密码' ] [ WITH GRANT OPTION ];
超级管理员
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'p4ssword' WITH GRANT OPTION;
普通用户
GRANT ALL PRIVILEGES ON blog.* TO 'dotcoo'@'192.168.1.101' IDENTIFIED BY 'p4ssword';
复制用户
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON blog.* TO 'repl'@'192.168.1.%' IDENTIFIED BY 'p4ssword';
权限选项
ALL PRIVILEGES 所有权限
USAGE 无任何权限
SELECT, ... 参考 全局权限(user表) 关键字
权限传递
WITH GRANT OPTION
删除用户
DROP USER 'dotcoo'@'192.168.1.101';
修改用户名
RENAME USER 'dotcoo'@'192.168.1.101'; TO 'lin'@'192.168.1.101';
撤销权限
REVOKE DELETE ON blog.* FROM 'dotcoo'@'192.168.1.101';
# REVOKE ALL PRIVILEGES, GRANT OPTION ON blog.* FROM 'dotcoo'@'192.168.1.101';
清空表
TRUNCATE TABLE `test`;
全局权限(user表)
列名 关键字 说明
数据
Select_priv SELECT 允许读取数据。
Insert_priv INSERT 允许插入和替换数据。
Update_priv UPDATE 允许修改数据。
Delete_priv DELETE 允许删除数据。
File_priv FILE 允许从文件中导入数据以及将数据导出至文件。
结构
Create_priv CREATE 允许创建新数据库和数据表。
Alter_priv ALTER 允许修改现有数据表的结构。
Index_priv INDEX 允许创建和删除索引。
Drop_priv DROP 允许删除数据库和数据表。
Create_tmp_table_priv CREATE TEMPORARY TABLES 允许创建临时表。
Show_view_priv SHOW VIEW 允许执行 SHOW CREATE VIEW 查询。
Create_routine_priv CREATE ROUTINE 允许创建存储过程。
Alter_routine_priv ALTER ROUTINE 允许修改或删除储存过程。
Execute_priv EXECUTE 允许运行存储过程。
Create_view_priv CREATE VIEW 允许创建视图。
Event_priv EVENT 允许为事件触发器设置事件
Trigger_priv TRIGGER 允许创建和删除触发器
管理
Grant_priv GRANT 允许添加用户和权限,而不允许重新载入权限表。
Super_priv SUPER 允许在达到最大连接数时连接,对于大多数像设置全局变量或杀死其它用户线程这样的管理操作是必需的。
Process_priv PROCESS 允许查看所有用户的进程
Reload_priv RELOAD 允许重新载入服务器设置并刷新服务器的缓存。
Shutdown_priv SHUTDOWN 允许关闭服务器。
Show_db_priv SHOW DATABASES 允许访问完整的数据库列表。
Lock_tables_priv LOCK TABLES 允许锁定当前线程的表。
References_priv REFERENCES 在此版本的 MySQL 中无效。
Repl_client_priv REPLICATION CLIENT 用户有权询问附属者/控制者在哪里。
Repl_slave_priv REPLICATION SLAVE 回复附属者所需。
Create_user_priv CREATE USER 允许创建、删除和重命名用户账户。
数据库权限(db表)
列名 关键字 说明
数据
Select_priv SELECT 允许读取数据。
Insert_priv INSERT 允许插入和替换数据。
Update_priv UPDATE 允许修改数据。
Delete_priv DELETE 允许删除数据。
结构
Create_priv CREATE 允许创建新数据库和数据表。
Alter_priv ALTER 允许修改现有数据表的结构。
Index_priv INDEX 允许创建和删除索引。
Drop_priv DROP 允许删除数据库和数据表。
Create_tmp_table_priv CREATE TEMPORARY TABLES 允许创建临时表。
Show_view_priv SHOW VIEW 允许执行 SHOW CREATE VIEW 查询。
Create_routine_priv CREATE ROUTINE 允许创建存储过程。
Alter_routine_priv ALTER ROUTINE 允许修改或删除储存过程。
Execute_priv EXECUTE 允许运行存储过程。
Create_view_priv CREATE VIEW 允许创建视图。
Event_priv EVENT 允许为事件触发器设置事件
Trigger_priv TRIGGER 允许创建和删除触发器
管理
Grant_priv GRANT 允许添加用户和权限,而不允许重新载入权限表。
Lock_tables_priv LOCK TABLES 允许锁定当前线程的表。
References_priv REFERENCES 在此版本的 MySQL 中无效。
权限字段说明是从phpmyadmin获得.
也可以直接修改mysql.user表,然后应用新的权限.
添加用户
insert into user (host, user, password) values ('localhost', 'test', password('test'));
授权数据库权限
insert into db (host, db, user, select_priv) values ('localhost', 'test', 'test', 'Y');
刷新权限
FLUSH PRIVILEGES;
获取所有表
SHOW tables;
SHOW FULL tables FROM mysql;
SELECT * FROM information_schema.tables WHERE table_schema = 'mysql';
获取所有列
DESC user;
SHOW FULL columns FROM user;
SELECT * FROM information_schema.columns WHERE table_schema = 'blog' AND table_name = 'user';