如何在MySQL中创建新用户并授权权限
前言
MySQL 是一种开源数据库管理软件,可帮助用户存储,组织和检索数据。它很细的权限设置,可以授权特定用户查看指定的表或库。
我们将在本教程中学习到最常见的 MySQL 基本语法。
如何创建一个新用户
在 MySQL 新手安装教程中,我们用 root 用户的身份在 MySQL 中进行操作,root 权限用户对 MySQL 中的所有数据库具有最高权限。但直接使用 root 用户操作数据库并不一定是好事。接下来,我们来学习如何创建特定权限用户。
让我们从在 MySQL Shell 中创建一个新用户开始:
mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
注意1:'newuser' 及 'password' 均为自定义变量,可根据大家的实际情况来改变。
注意2: 在本教程中 MySQL shell 添加用户时,命令中的localhost
不是服务器 ip 地址,localhost
是主机名,意思是“这台计算机”。MySQL 会对这个特殊的主机名进行特殊处理:当使用这台主机的用户登录 MySQL 时,MySQL 会尝试使用 Unix 套接字文件连接到本地服务器。因此,当我们打算通过 SSH 连接到服务器时,或者当我们运行本地 mysql 客户端连接到本地 MySQL 服务器时,通常会使用localhost
。
在创建用户之后,新创建的用户无权对数据库进行任何操作。因为刚创建的新用户并没有被赋予任何权限。只是生成了一个可以用密码登录的用户而已。
所以,接下来,在创建用户之后,下一步就是给这个用户赋予对应的权限。
mysql> GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
这条命令中的两个*
表示允许此用户(newuser)访问数据库和表单,以及允许此用户比读写、编辑、更改、执行所有数据库和表单的所有任务。
请注意,这条语句赋予了 newuser 对数据库中所有内容的完全 root 访问权限。本条命令仅作为演示,并不建议大家按此操作,赋予常用账号 root 一样的权限并作为日常使用,是非常危险的,这会让数据库处于高风险状态。谨慎。
接下来,在确认新用户设置权限后,请务必重新加载所有权限。
mysql> FLUSH PRIVILEGES;
运行这条命令后,我们的更改就立即生效了。
如何授权不同用户不同权限
以下是我们创建的用户常见权限列表:
- ALL PRIVILEGES:正如上文所说,这是允许用户完全访问 MySQL 指定数据库(如果未选择数据库,则可以跨系统全局访问)
- CREATE:允许创建新表或数据库
- DROP:允许删除表或数据库
- DELETE:允许从表中删除行
- INSERT:允许在表中插入行
- SELECT:允许使用
SELECT
命令来读取数据库 - UPDATE:允许更新表单
- GRANT OPTION:允许授权或删除其他用户的权限
要为指定用户授权,可使用以下命令
mysql> GRANT type_of_permission ON database_name.table_name TO ‘username’@'localhost’;
注意:在取消权限时,语法变为FROM
,与我们授权权限时使用的TO
有区别,请特别注意。
我们可以使用以下命令来查看用户当前权限:
SHOW GRANTS username;
我们可以使用DROP
来删除数据库,我们也可以使用DROP
来彻底删除用户。
mysql> DROP USER ‘username’@‘localhost’;
切换新用户,我们可以用以下命令注销当前用户的登录状态。
mysql> quit
然后在终端输入需要登录的用户重新登录:
$ mysql -u [username] -p
总结
读到这里,我想大家应该学会使用 MySQL 来添加用户和授权用户权限了。从这篇教程开始,我们开始尝试数据库的不同权限设置对数据库带来的影响。关于 MySQL 数据库快速查询,推荐大家试试「卡拉搜索」,一行代码快速部署,快速提升你的 MySQL 数据库搜索效率。