MySQL创建用户及赋予用户权限

云服务器上的MySQL数据库 , 如果只用一个root用户进行远程连接 , 不但风险较大 , 而且使用起来也不方便 , 这时候新建一个角色来管理MySQL其中一个数据库用起来就放心多了 !

创建MySQL用户及赋予用户权限

通过的help查看grant帮助文档 :

在命令行输入help grant得到如下帮助信息

*** 省略部分 ***
For example:

CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost';
ALTER USER 'jeffrey'@'localhost' WITH MAX_QUERIES_PER_HOUR 90;
*** 省略部分 ***

通过查看grant的命令帮助,可以很容易的找到创建用户并授权的例子 !

比较常用的创建用户的方法是,使用grant命令在创建用户的同时进行权限授权。具体授权例子为:

GRANT ALL ON db1.* TO 'jeffrey'@'localhost' IDENTIFIED BY 'password';

参数说明 :

grantall privilegeson dbname.*to username@localhostidentified by ‘password’
授权命令对应权限目标 : 库和表用户名和客户端主机用户密码

操作案例

创建 oldboy 用户 , 对test库具备所有权限,允许从localhost主机登录管理数据库,密码是oldboy123

实现的命令具体为

grant all privileges on test.* to oldboy@'localhost' identified by 'oldboy123';

这个出现了一个问题 , 我在本地MySQL上执行会失败 ; 但是在服务器上执行成功了

在这里插入图片描述

![[Pasted image 20240331155437.png]]

检查是否新建成功

执行下面命令

#查看是否创建成功
select user,host from mysql.user;

#查看权限
show grants for oldboy@localhost;

可以看到 oldboy用户已经创建成功

在这里插入图片描述

成功后执行一下刷新命令

flush privileges;

远程登录问题

新建用户后 , 在服务器命令行能够使用新建的用户登录 , 但是在远程连接的时候 ,登录失败

在这里插入图片描述

这是因为grant授权的时候 user@'localhost' 意为授权访问数据库本地主机localhost, 可以用域名 , IP地址或者IP段来替代 . 因此要授权主机可以远程连接数据库

  • 百分号匹配方法
  • 子网掩码配置法

这里使用百分号匹配法 , 可以使用授权命令把localhost修改为%

% 表示任何主机,你也可以替换为具体的远程IP地址。

grant all privileges on mtest.* to oldboy@'%' identified by 'oldboy123';
#不要忘了刷新
flush privileges;

删除用户

先查看现有的用户

在命令行界面执行查看用户和主机命令

# 执行命令
mysql> select user,host from mysql.user;
# 显示结果
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+

删除指定的用户

MySQL的help文档这样显示的:

mysql> help drop user

Name: 'DROP USER'
Description:
Syntax:
DROP USER [IF EXISTS] user [, user] ...

The DROP USER statement removes one or more MySQL accounts and their
privileges. It removes privilege rows for the account from all grant
tables.

To use DROP USER, you must have the global CREATE USER privilege, or
the DELETE privilege for the mysql system database. When the read_only
system variable is enabled, DROP USER additionally requires the SUPER
privilege.

An error occurs if you try to drop an account that does not exist. If
the IF EXISTS clause is given, the statement produces a warning for
each named user that does not exist, rather than an error.

Each account name uses the format described in
https://dev.mysql.com/doc/refman/5.7/en/account-names.html. For
example:

DROP USER 'jeffrey'@'localhost';

The host name part of the account name, if omitted, defaults to '%'.

URL: https://dev.mysql.com/doc/refman/5.7/en/drop-user.html

根据文档上的描述 , 删除现有的 oldboy 用户

drop user 'oldboy'@'localhost';

#删除后的返回下面结果

注意 : 如果drop删除不了(一般是特殊字符或者大写),可以用下面方式删除(以root用户 , oldgirl主机为例) :

delete from mysql.user where user='root' and host='oldgirl';

删除成功后最好执行一下刷新命令

flush privileges;

参考链接:

10-创建mysql用户及授权的多种方法实战

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值