MySQL 账号与权限管理


我们在后端开发的时候通常需要使用 MySQL 数据库。但为了安全起见,登录数据库账户不应是具有最高权限的root账户。这就涉及到如何创建新账户,以及如何授权账户权限的问题。

账号登录

以非密码形式登录账号

$ mysql -u [username]

以密码形式登录账号

$ mysql -u [username] -p

更改root密码:
MySQL 5.7.6和以后的版本:

ALTER USER root@localhost IDENTIFIED BY '[password]';

MySQL 5.7.5和以前的版本:

SET PASSWORD FOR root@localhost = PASSWORD('[password]');

创建账户

root账户登录

$ mysql -u root -p

创建账户

CREATE USER [username]@localhost IDENTIFIED BY '[password]';

给账户授权

一般表达式是:

GRANT [permission] ON [database_name].[table_name] TO [username]@localhost;

比如,要给新用户newuser所有数据库的所有表完全权限,可以这样输入命令

GRANT ALL PRIVILEGES ON *.* TO newuser@localhost;

其中,ALL PRIVILEGES表示完全权限(full access), 第一个*代表所有数据库,第二个*代表数据库下的所有表。再比如,如果要给newuser授权test库的account表完全权限,可以这样输入命令

GRANT ALL PRIVILEGES ON test.account TO newuser@localhost;

可用的权限列表包括:

  • ALL PRIVILEGES 允许用户到指定数据库的完全权限
  • CREATE 允许用户创建新表或新数据库
  • DROP 允许用户删除表或数据库
  • DELETE 允许用户删除行
  • INSERT 允许用户插入行
  • SELECT 允许用户读取数据库
  • UPDATE 允许用户更新数据库
  • GRANT OPTION 允许用户授权或移除其他账户

可以通过如下方式刷新权限

FLUSH PRIVILEGES;

回收权限

和给账户授权相对的,是权限的回收。回收权限的一般表达式是:

REVOKE [permission] ON [database_name].[table_name] FROM [username]@localhost;

删除账号

DROP USER [username]@localhost;

退出账号

QUIT;

发表评论

您的电子邮箱地址不会被公开。