mysql用户管理

2012-09-25 16:09  1089人阅读  评论 (0)
Tags: 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';