我们在后端开发的时候通常需要使用 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;