管理 MariaDB 用户账户

哪些用户可以连接到MariaDB 服务器,他们都可以从哪些地方连接,连接到服务器后又能够做什么等,都是本文将涉及到的内容。

用户的权限信息都保存在 mysql 库中的几个权限表中。对 MariaDB 的账号管理主要通过下面的SQL 语句来完成。

  • CREATE USER,DROP USER 和 RENAME USER。三条语句分别用来创建、删除和重命名 MariaDB 账户。
  • GRANT。为指定 MariaDB 账户分配权限。
  • REVOKE。撤销指定 MariaDB 账户的权限。
  • SET PASSWORD。为给定MariaDB 账户设置口令。
  • SHOW GRANT。显示指定 MariaDB账户当前拥有的全部权限。

Mariadb 的账户管理操作

  • CREATE USER:创建一个新账户并为其设置一个口令(可选操作):
    CREATE USER account [IDENTIFIED BY ‘password’];
    这条语句只是创建帐户,未对帐户进行任何权限分配,权限分配由 GRANT 语句完成。
    示例:

     MariaDB [(none)]> CREATE USER yangfan IDENTIFIED BY ‘yangfan‘;
  • DROP USER:删除一个帐户及与之相关的全部权限:
    DROP USER account;
    该语句并未删除指定用户可访问到的任何数据库及相关的数据对象。
    示例:
     MariaDB [(none)]> DROP USER yangfan;
  • RENAME USER:改变给定账户的名称。
    RENAME USER from_account TO to_account
    示例:
     MariaDB [(none)]> RENAME USER ‘yangfan.lalala‘@‘127.0.0.1‘ TO ‘yangfan.lalala‘@‘%‘;

CREATE USER 等账户管理语句中的账户由一个用户名和一个主机名组成,其格式为‘user_name’@’host_name’。

主机部分是指客户从哪些主机去连接服务器。如若限制某个用户从指定的主机连接 MariaDB 服务:

MariaDB [(none)]> CREATE USER ‘yangfan‘@‘localhost‘ IDENTIFIED BY ‘yangfan‘;
MariaDB [(none)]> CREATE USER ‘yangfan‘@‘169.254.195.91‘ IDENTIFIED BY ‘yangfan‘;

第一条语句,创建一个名为 yangfan 的用户,并限制其只可从本机进行连接操作;第二条一句,创建一个名为 yangfan 的用户,并限制其只可从 ip 169.254.195.91 的客户机上连接服务。虽然用户名相同,实际上,他们并不是同一个账户,其对应的权限也可能不尽相同。

当然很多情况下并不需要严格要求用户只能从一台主机连接服务器。这个时候就可以用上通配符:

MariaDB [(none)]> CREATE USER ‘yangfan‘@‘169.254.195.%‘ IDENTIFIED BY ‘yangfan‘;
MariaDB [(none)]> CREATE USER ‘yangfan‘@‘%.yangfanweb.cn‘ IDENTIFIED BY ‘yangfan‘;
MariaDB [(none)]> CREATE USER ‘yangfan‘@‘%‘ IDENTIFIED BY ‘yangfan‘;

SQL 中 LIKE 的通配符 % 及 -,在此都可使用。如若使用 “%” 或 “-” 本身,则需使用 “\” 对其转义。

上面第一条语句创建一个名为 yangfan 的用户,并允许其在 169.254.195.* ip 段下的所有主机连接服务器;第二条语句创建一个名为 yangfan 的用户,并允许其能够从 yangfanweb.cn 域中的任意一台主机连接服务器;第三条语句创建了一个名为 yangfan 的用户,并允许其可从任意一台主机来连接服务器。(第三种方式最为方便,但对系统最不安全。)

MariaDB 对账户授权

对账户授权需要使用GRANT语句,下面是 GRANT 语句的语法:

GRANT privileges (columns) ON what To account [IDENTIFIED BY ‘password’][REQUIRE encryption requirements] [WITH grant or resource management options];

GRANT 语句里,如果用户存在,GRANT 语句则将改变它的权限;如果不存在 GRANT 语句则创建它,再将给定的权限分配给它。

下面是 GRANT 语句最为常用的几个语法元素。

  • privileges,授权账户的权限。
  • columns,权限将作用的数据列。如若需要列举多个数据列,则用逗号分隔。
  • what,权限的级别。
  • account,被授权的账户。account 的格式为 ‘user_name’@’host_name’。
  • password,账户的口令。类似于 CREATE USER 中的 IDENTIED BY。
确定账户的权限

可以授予用户的权限由很多种。下面3张表即为权限的汇总。


数据库管理权限

权限名 权限所允许的操作
CREATE USER 使用高级账户管理语句
FILE 读、写 MariaDB 服务器主机上的文件
GRANT OPTION 把账户权限授予其他账户
PROCESS 查看在运行的线程的信息
RELOAD 重新加载权限数据或更新日志及缓存
REPLICATION CLIENT 查询主/从服务器的运行地点
REPLICATION SLAVE 以复制的从服务器运行
SHOW DATBASES 用 SHOW DATABASES 语句查看全部数据库名称
SHUTDOWN 关闭服务器
SUPER 用 KILL 命令终止线程以及进行其他超级用户操作

数据库对象操作权限

ALTER 更改数据表或索引的定义
ALTER ROUTINE 更改或删除存储函数或存储过程
CREATE 创建数据库或数据表
CRATE ROUTINE 创建存储函数或存储过程
CREATE TEMPORARY TABLE 用 TEMPORARY 关键字创建临时表
CREATE VIEW 创建视图
DELETE 删除数据库中现有的数据行
DROP 删除数据库、数据表或其他对象
EVENT 为时间调度程序创建、删除或修改各种事件
EXECUTE 执行存储函数或存储过程
INDEX 创建或删除索引
INSERT 往数据表中插入新数据行
LOCK TABLE 用 LOCK TABLE 语句明确地锁定数据表
REFERENCE 未使用(保留字)
SELECT 检索数据表里的数据行
SHOW VIEW 查看视图的定义
TRGGER 创建或删除触发器
UPDATE 修改数据行

其他权限

ALL [PRIVILEGES] 所有操作权限(但不包含 GRANT)
USAGE 一个特殊的“无权限”权限

数据库管理权限控制着服务器的运行情况,所以很少授权与普通用户。数据库对象操作权限控制着对服务器数据访问。

授予用户权限

要想把权限授予其他用户,首先发出授权的用户必须具备该权限,而且必须具备 GRANT OPTION 权限。

MariaDB 允许在数据库系统全局、数据库、数据表、数据列等多种级别上进行授权。权限级别由 ON 子句控制。

执行下面的语句:

MariaDB [(none)]> GRANT ALL ON test.* TO ‘yangfan‘@‘localhost‘ WITH GRANT OPTION;

上面语句将数据库test及其里面所有对象的所有权限授权于账户 ‘yangfan’@’localhost’。

MariaDB [(none)]> SHOW GRANTS FOR ‘yangfan‘@‘localhost‘;
+----------------------------------------------------------------------------------------------------------------+
| Grants for [email protected]                                                                                   |
+----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO ‘yangfan‘@‘localhost‘ IDENTIFIED BY PASSWORD ‘*F6131BD316F9043F5FE0E5B95F5713D6F86A157F‘ |
| GRANT ALL PRIVILEGES ON `test`.* TO ‘yangfan‘@‘localhost‘ WITH GRANT OPTION                                    |
+----------------------------------------------------------------------------------------------------------------+

执行以下语句:

MariaDB [(none)]> GRANT SELECT,INSERt,UPDATE ON test.* TO ‘yangfan‘@‘127.0.0.1‘;

上面语句将账户 ‘yangfan’@’127.0.0.1’ 的权限更改为,只有对数据库 test 及其里面所有对象进行 SELECT、INSERT 和 UPDATE 操作的权限。

MariaDB [(none)]> SHOW GRANTS FOR ‘yangfan‘@‘127.0.0.1‘;
+----------------------------------------------------------------------------------------------------------------+
| Grants for [email protected]                                                                                   |
+----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO ‘yangfan‘@‘127.0.0.1‘ IDENTIFIED BY PASSWORD ‘*F6131BD316F9043F5FE0E5B95F5713D6F86A157F‘ |
| GRANT SELECT, INSERT, UPDATE ON `test`.* TO ‘yangfan‘@‘127.0.0.1‘                                              |
+----------------------------------------------------------------------------------------------------------------+

撤销用户权限

撤销用户授权用 REVOKE 语句,下面是 REVOKE 语句的语法:

REVOKE preivileges [ columns ] ON what FROM account;

之前我们将全部权限授予账户 ‘yangfan’@’localhost’, 现在我们对该账户进行权限的删除:

MariaDB [(none)]> REVOKE ALL ON test.* FROM ‘yangfan‘@‘localhost‘;

这样账户 ‘yangfan’@’localhost’ 对数据库 test 的权限便被全部删除了。

MariaDB [(none)]> SHOW GRANTS FOR ‘yangfan‘@‘localhost‘;
+----------------------------------------------------------------------------------------------------------------+
| Grants for [email protected]                                                                                   |
+----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO ‘yangfan‘@‘localhost‘ IDENTIFIED BY PASSWORD ‘*F6131BD316F9043F5FE0E5B95F5713D6F86A157F‘ |
| GRANT USAGE ON `test`.* TO ‘yangfan‘@‘localhost‘ WITH GRANT OPTION                                             |
+----------------------------------------------------------------------------------------------------------------+

注意:USAGE 便是上文提到的“无权限”的权限。

我们再删除账户 ‘yangfan’@’127.0.0.1’ 的 INSERT 和 UPDATE 的权限:

MariaDB [(none)]> REVOKE INSERT, UPDATE ON test.* FROM ‘yangfan‘@‘127.0.0.1‘;

查看结果:

MariaDB [(none)]> SHOW GRANTS FOR ‘yangfan‘@‘127.0.0.1‘;
+----------------------------------------------------------------------------------------------------------------+
| Grants for [email protected]                                                                                   |
+----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO ‘yangfan‘@‘127.0.0.1‘ IDENTIFIED BY PASSWORD ‘*F6131BD316F9043F5FE0E5B95F5713D6F86A157F‘ |
| GRANT SELECT ON `test`.* TO ‘yangfan‘@‘127.0.0.1‘                                                              |
+----------------------------------------------------------------------------------------------------------------+
时间: 2024-10-14 09:54:50

管理 MariaDB 用户账户的相关文章

MySQL/MariaDB用户账户管理

用户账户管理: 'Username'@'Hostname' Username:任意的字符串组合,只能包含基本意义的字符:可以包含"_"."."."-": Hostname:可以为FQDN(完全合格域名),域名,IP地址,可使用MySQL通配符"_"代表任意单个字符"%"代表任意多个任意字符: 创建用户账户: CREATE USER语句: CREATE USER user [IDENTIFIED BY [PA

MariaDB 用户与权限管理(12)

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,MySQL由于现在闭源了,而能轻松成为MySQL的代替品.在存储引擎方面,使用XtraDB来代替MySQL的InnoDB,MariaDB由MySQL的创始人Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购MySQL的所有权也落入Oracle的手中.M

《Linux学习并不难》用户管理(1):Linux用户账户分类

9.1  <Linux学习并不难>用户管理(1):Linux用户账户分类 用户账户在Linux系统中是分角色的,由于角色不同,每个用户的权限和所能执行的工作任务也不同.在实际的管理中,用户的角色是通过UID(用户ID号)来标识的,每个用户的UID都是不同的. 在Linux系统中有三大类用户,分别是root用户.系统用户和普通用户. 1.root用户 在Linux系统中,root用户UID为0,root用户的权限是最高的,普通用户无法执行的操作,root用户都能完成,所以也被称为超级用户.在Li

菜鸟学Linux之:用户账户管理下的/etc/passwd和/etc/shadow

用户账户管理主要有如下几个配置文件:/etc/passwd./etc/shadow./etc/group和用户邮箱/var/spool/mail,今天着重要说明一下/etc/passwd和/etc/shadow两个配置文件/etc/passwd:记录了Linux系统上所有的帐号/etc/shadow:记录了所有账号对应的密码下面来了解下配置文件中各段分别表示什么意思,如图http://i2.51cto.com/images/blog/201805/26/a934831143e72c9633d09

mysql之锁、存储引擎和用户账户管理

一.锁(自动加锁和释放锁) 二.存储引擎 三.用户账户管理---用户授权 原文地址:https://www.cnblogs.com/yuxiangyang/p/11079236.html

Linux上FTP部署:基于mariadb管理虚拟用户

FTP原理 FTP 采用 Internet 标准文件传输协议 FTP 的用户界面, 向用户提供了一组用来管理计算机之间文件传输的应用程序.图1 FTP 的基本模型 FTP 是基于客户---服务器(C/S)模型而设计的,在客户端与 FTP 服务器之间建立两个连接. 开发任何基于 FTP 的客户端软件都必须遵循 FTP 的工作原理,FTP 的独特的优势同时也是与其它客户服务器程序最大的不同点就在于它在两台通信的主机之间使用了两条 TCP 连接,一条是数据连接,用于数据传送:另一条是控制连接,用于传送

Linux基本命令——用户账户管理

一,用户账号 超级用户:root,UID为0,是linux系统中权限最大的用户. 程序用户:UID为1~499,是某些程序安装时生成的一些低权限用户,一般不允许登录到系统. 普通用户:UID为500~60000,是有管理员创建,拥有的权限受到一定的限制,一般只在自己的宿主目录中有完整的权限. 二,用户账户文件 用户账户的文件由/etc/passwd./etc/shadow两部分组成.     1,/etc/passwd     系统中所有的账户信息都保存在/etc/passwd文件中.每一行代表

mysql用户账户与管理

MYSQL数据库管理之权限管理 经常遇到有网友在QQ群或者论坛上问关于mysql权限的问题,今天抽空总结一下关于这几年使用MYSQL的时候关于MYSQL数据库的权限管理的经验,也希望能对使用mysql的网友有所帮助! MYSQL权限简介 关于mysql的权限简单的理解就是mysql允许你做你权利以内的事情,不可以越界.比如只允许你执行select操作,那么你就不能执行update操作.只允许你从某台机器上连接mysql,那么你就不能从除那台机器以外的其他机器连接mysql. 那么MYSQL的权限

Linux基础知识--用户账户管理

创建用户账户 用户和组账户概述: 用户账户: 超级用户(root) 普通用户 程序用户 组账户 基本组(私有组) 附加组(公共组) 标识: UID(用户标识号) GID(组标识号) passwd用户账号文件 用于保存用户账户的基本信息 文件位置:/etc/passwd 每一行对应一个用户的账号信息 [root@localhost ~]# head /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologi