文章目录
- 57 openEuler搭建Mariadb数据库服务器-管理数据库用户
- 57.1 创建用户
- 57.2 查看用户
- 57.3 修改用户
- 57.3.1 修改用户名
- 57.3.2 修改用户示例
- 57.3.3 修改用户密码
- 57.3.4 修改用户密码示例
- 57.4 删除用户
- 57.5 用户授权
- 57.6 删除用户权限
57 openEuler搭建Mariadb数据库服务器-管理数据库用户
57.1 创建用户
可以使用CREATE USER语句来创建一个或多个用户,并设置相应的口令。
CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
其中:
- username:用户名。
- hostname:主机名,即用户连接数据库时所在的主机的名字。若是本地用户可用localhost,若在创建的过程中,未指定主机名,则主机名默认为“%”,表示一组主机。
- password:用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器,但从安全的角度而言,不推荐这种做法。
使用CREATE USER语句必须拥有数据库的INSERT权限或全局CREATE USER权限。
使用CREATE USER语句创建一个用户账号后,会在系统自身的数据库的user表中添加一条新记录。若创建的账户已经存在,则语句执行时会出现错误。
新创建的用户拥有的权限很少,只允许进行不需要权限的操作,如使用SHOW语句查询所有存储引擎和字符集的列表等。
例如示例命令如下:
创建密码为123456,用户名为testuser1的本地用户。
MariaDB [(none)]> CREATE USER 'testuser1'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]>
创建密码为123456,用户名为testuser2,主机名为192.168.0.100的用户。
MariaDB [(none)]> CREATE USER 'testuser2'@'192.168.0.100' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]>
57.2 查看用户
可以使用SHOW GRANTS语句或SELECT语句查看一个或多个用户。
查看特定用户:
SHOW GRANTS [FOR 'username'@'hostname'];
SELECT USER,HOST,PASSWORD FROM mysql.user WHERE USER='username';
查看所有用户:
SELECT USER,HOST,PASSWORD FROM mysql.user;
其中:
- username:用户名。
- hostname:主机名。
例如示例命令如下:
查看testuser1用户。
MariaDB [(none)]> SHOW GRANTS FOR 'testuser1'@'localhost';
+------------------------------------------------------------------------------------------------------------------+
| Grants for testuser1@localhost |
+------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `testuser1`@`localhost` IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
+------------------------------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)
MariaDB [(none)]>
查看mysql数据库中所有用户。
MariaDB [(none)]> SELECT USER,HOST,PASSWORD FROM mysql.user;
+-------------+---------------+-------------------------------------------+
| User | Host | Password |
+-------------+---------------+-------------------------------------------+
| mariadb.sys | localhost | |
| root | localhost | *E20F17D9FA1E9A6203D3EA047C3A949897E6A01D |
| mysql | localhost | invalid |
| testuser1 | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| testuser2 | 192.168.0.100 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-------------+---------------+-------------------------------------------+
5 rows in set (0.001 sec)
MariaDB [(none)]>
57.3 修改用户
57.3.1 修改用户名
可以使用RENAME USER语句修改一个或多个已经存在的用户名。
RENAME USER 'oldusername'@'hostname' TO 'newusername'@'hostname';
其中:
- oldusername:旧的用户名。
- newusername:新的用户名。
- hostname:主机名。
RENAME USER语句用于对原有的账号进行重命名。若系统中旧账号不存在或者新账号已存在,则该语句执行时会出现错误。
使用RENAME USER语句,必须拥有数据库的UPDATE权限或全局CREATE USER权限。
57.3.2 修改用户示例
将用户名testuser1修改为testuser2,主机名为locahost。
MariaDB [(none)]> RENAME USER 'testuser1'@'localhost' TO 'testuser2'@'localhost';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]>
57.3.3 修改用户密码
可以使用SET PASSWORD语句修改一个用户的登录密码。
SET PASSWORD FOR 'username'@'hostname' = PASSWORD('newpassword');
其中:
- FOR ‘username’@‘hostname’:FOR字句,可选项,指定欲修改密码的用户名及主机名。
- PASSWORD(‘newpassword’):表示使用函数PASSWORD()设置新口令,即新口令必须传递到函数PASSWORD()中进行加密。
注意:
PASSWORD()函数为单向加密函数,一旦加密后不能解密出原明文。
在SET PASSWORD语句中,若不加上FOR子句,表示修改当前用户的密码。
FOR字句中必须以’username’@'hostname’的格式给定,username为账户的用户名,hostname为账户的主机名。
欲修改密码的账号必须在系统中存在,否则语句执行时会出现错误。
57.3.4 修改用户密码示例
将用户名为testuser2的密码修改为0123456,主机名为locahost。
MariaDB [(none)]> SET PASSWORD FOR 'testuser2'@'localhost' = PASSWORD('0123456') ;
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]>
57.4 删除用户
可以使用DROP USER语句来删除一个或多个用户账号以及相关的权限。
DROP USER 'username1'@'hostname1' [,'username2'@'hostname2']…;
注意:
用户的删除不会影响他们之前所创建的表、索引或其他数据库对象,因为数据库并不会记录创建了这些对象的账号。
DROP USER语句可用于删除一个或多个数据库账号,并删除其原有权限。
使用DROP USER语句必须拥有数据库的DELETE权限或全局CREATE USER权限。
在DROP USER语句的使用中,若没有明确地给出账号的主机名,则该主机名默认为“%”。
例如示例命令如下:
删除用户名为testuser2的本地用户。
MariaDB [(none)]> DROP USER 'testuser2'@'localhost';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]>
57.5 用户授权
可以使用GRANT语句来对新建用户的授权。
GRANT privileges ON databasename.tablename TO 'username'@'hostname';
其中:
- ON字句:用于指定权限授予的对象和级别。
- privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所有的权限则使用ALL。
- databasename:数据库名。
- tablename:表名。
- TO字句:用来设定用户密码,以及指定被赋予权限的用户。
- username:用户名。
- hostname:主机名。
如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*。
如果在TO子句中给系统中存在的用户指定密码,则新密码会将原密码覆盖。
如果权限被授予给一个不存在的用户,则会自动执行一条CREATE USER语句来创建这个用户,但同时必须为该用户指定密码。
例如示例命令如下:
对本地用户testuser2授予SELECT和INSERT权限。
MariaDB [(none)]> GRANT SELECT,INSERT ON *.* TO 'testuser2'@'192.168.0.100';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]>
57.6 删除用户权限
可以使用REVOKE语句来删除一个用户的权限,但此用户不会被删除。
REVOKE privilege ON databasename.tablename FROM 'username'@'hostname';
其中REVOKE语句的参数与GRANT语句的参数含义相同。
要使用 REVOKE 语句,必须拥有数据库的全局CREATE USER权限或UPDATE权限。
例如示例命令如下:
删除本地用户testuser2的INSERT权限。
MariaDB [(none)]> REVOKE INSERT ON *.* FROM 'testuser2'@'192.168.0.100';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]>
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!