账号管理

新建普通用户

方法一:使用create user

create user 'username'@'host' identified by 'password';
--host为主机名,其中localhost指本地主机
--如果只指定用户名部分,则主机部分默认为%(对所有的主机开放权限)

方法二:直接操作mysql数据库的user 表

insert into mysql.user(Host,User,authentication_string) values('host','username',MD5('password'));

--'ssl_cipher','x509_issuer','x509_subject' 没有默认值,会报错

--最好不用该方法,用的话:

删除用户

方法一:drop user

drop user  'username'@'host' ;

方法二:delete

delete from  mysql.user where host='localhost' and user='username';

修改用户密码

root(超级用户)修改自己的密码

update  mysql.user set authentication_string=MD5("password")  where host='localhost' and user='username';

root(超级用户)修改普通用户密码

--方法一 set
set password for 'username'@'localhost'='password';
--方法二 update
update  mysql.user set authentication_string=MD5("password")  where host='localhost' and user='username';

权限管理

授权

--全局层级
--授予
grant all on *.*  to 'user'@'host'
--撤销
revoke all on *.*   from 'user'@'host'
--数据库级别
--授予
grant all on  db_name.*  to 'user'@'host'
--撤销
revoke all on db_name.*  from 'user'@'host'

--表层级
--授予
grant all on  db_name.table_name  to 'user'@'host'
--撤销
revoke all on dbname.table_name  from 'user'@'host'

--列层级  适用于一个给定表中的单个列,权限存储在mysql.columns_priv
--创建用户,然后授权
--一句完成
grant   select,insert  on *.* to 'user'@'host' identified by 'password'  
[with grant option];
--分步完成
create user 'username'@'host' identified by 'password';
grant all on *.*  to 'user'@'host';

--MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。

flush privileges;
--将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里.

mysql数据库user表字段说明

Select_priv。确定用户是否可以通过SELECT命令选择数据。

Insert_priv。确定用户是否可以通过INSERT命令插入数据。

Update_priv。确定用户是否可以通过UPDATE命令修改现有数据。

Delete_priv。确定用户是否可以通过DELETE命令删除现有数据。

Create_priv。确定用户是否可以创建新的数据库和表。

Drop_priv。确定用户是否可以删除现有数据库和表。

Reload_priv。确定用户是否可以执行刷新和重新加载MySQL所用各种内部缓存的特定命令,包括日志、权限、主机、查询和表。

Shutdown_priv。确定用户是否可以关闭MySQL服务器。在将此权限提供给root账户之外的任何用户时,都应当非常谨慎。

Process_priv。确定用户是否可以通过SHOW PROCESSLIST命令查看其他用户的进程。

File_priv。确定用户是否可以执行SELECT INTO OUTFILE和LOAD DATA INFILE命令。

Grant_priv。确定用户是否可以将已经授予给该用户自己的权限再授予其他用户。例如,如果用户可以插入、选择和删除foo数据库中的信息,并且授予了GRANT权限,则该用户就可以将其任何或全部权限授予系统中的任何其他用户。

References_priv。目前只是某些未来功能的占位符;现在没有作用。

Index_priv。确定用户是否可以创建和删除表索引。

Alter_priv。确定用户是否可以重命名和修改表结构。

Show_db_priv。确定用户是否可以查看服务器上所有数据库的名字,包括用户拥有足够访问权限的数据库。可以考虑对所有用户禁用这个权限,除非有特别不可抗拒的原因。

Super_priv。确定用户是否可以执行某些强大的管理功能,例如通过KILL命令删除用户进程,使用SET
GLOBAL修改全局MySQL变量,执行关于复制和日志的各种命令。

Create_tmp_table_priv。确定用户是否可以创建临时表。

Lock_tables_priv。确定用户是否可以使用LOCK TABLES命令阻止对表的访问/修改。

Execute_priv。确定用户是否可以执行存储过程。此权限只在MySQL 5.0及更高版本中有意义。

Repl_slave_priv。确定用户是否可以读取用于维护复制数据库环境的二进制日志文件。此用户位于主系统中,有利于主机和客户机之间的通信。

Repl_client_priv。确定用户是否可以确定复制从服务器和主服务器的位置。

Create_view_priv。确定用户是否可以创建视图。此权限只在MySQL 5.0及更高版本中有意义。关于视图的更多信息,参见第34章。

Show_view_priv。确定用户是否可以查看视图或了解视图如何执行。此权限只在MySQL 5.0及更高版本中有意义。关于视图的更多信息,参见第34章。

Create_routine_priv。确定用户是否可以更改或放弃存储过程和函数。此权限是在MySQL 5.0中引入的。

Alter_routine_priv。确定用户是否可以修改或删除存储函数及函数。此权限是在MySQL 5.0中引入的。

Create_user_priv。确定用户是否可以执行CREATE USER命令,这个命令用于创建新的MySQL账户。

Event_priv。确定用户能否创建、修改和删除事件。这个权限是MySQL 5.1.6新增的。

Trigger_priv。确定用户能否创建和删除触发器,这个权限是MySQL 5.1.6新增的。