mysql 用户管理和权限设置

数据库 1550 0 2019-01-30

mysql 用户管理和权限设置

1.进入mysql命令行,输入root及密码

[root@localhost ~]# mysql -u root -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 19

Server version: 5.7.22 MySQL Community Server (GPL)


Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql>


2.用户管理及权限设置

// 管理用户

mysql> use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A


Database changed


//查询用户

mysql> select host,user from user;

+-----------+---------------+

| host      | user          |

+-----------+---------------+

| %         | root          |

| %         | test          |

| localhost | mysql.session |

| localhost | mysql.sys     |

| localhost | root          |

+-----------+---------------+

5 rows in set (0.00 sec)


//创建用户(用户:admin,密码:123456)

mysql> create user admin identified by '123456';

Query OK, 0 rows affected (0.00 sec)


// 删除用户admin

mysql> drop user admin;

Query OK, 0 rows affected (0.00 sec)


// 重新创建用户(用户:admins,密码:123456)

mysql> create user admins identified by '123456';

Query OK, 0 rows affected (0.00 sec)


mysql> select host, user from user;

+-----------+---------------+

| host      | user          |

+-----------+---------------+

| %         | admins        |

| %         | root          |

| %         | test          |

| localhost | mysql.session |

| localhost | mysql.sys     |

| localhost | root          |

+-----------+---------------+

6 rows in set (0.00 sec)


// 查看用户admins的权限

mysql> show grants for admins;

+------------------------------------+

| Grants for admins@%                |

+------------------------------------+

| GRANT USAGE ON *.* TO 'admins'@'%' |

+------------------------------------+

1 row in set (0.00 sec)


// 赋予权限(给用户admins,授予数据库test的查询权限)

mysql> grant select on test.* to admins;

Query OK, 0 rows affected (0.00 sec)


// 查看用户admins的权限

mysql> show grants for admins;

+------------------------------------------+

| Grants for admins@%                      |

+------------------------------------------+

| GRANT USAGE ON *.* TO 'admins'@'%'       |

| GRANT SELECT ON `test`.* TO 'admins'@'%' |

+------------------------------------------+

2 rows in set (0.00 sec)


// 收回权限(对用户admins,收回数据库test的查询权限)

mysql> revoke select on test.* from admins;

Query OK, 0 rows affected (0.01 sec)


// 查看用户admins的权限

mysql> show grants for admins;

+------------------------------------+

| Grants for admins@%                |

+------------------------------------+

| GRANT USAGE ON *.* TO 'admins'@'%' |

+------------------------------------+

1 row in set (0.00 sec)


// 赋予权限(给用户admins,授予数据库test的查询、更新、删除、插入等权限)

mysql> grant select, update, delete, insert on test.* to admins;

Query OK, 0 rows affected (0.00 sec)


// 查看用户admins的权限

mysql> show grants for admins;

+------------------------------------------------------------------+

| Grants for admins@%                                              |

+------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'admins'@'%'                               |

| GRANT SELECT, INSERT, UPDATE, DELETE ON `test`.* TO 'admins'@'%' |

+------------------------------------------------------------------+

2 rows in set (0.01 sec)


// 赋予权限(给用户admins,授予数据库test的新建表、删除表或删除数据库等权限)

mysql> grant create,drop on test.* to admins;

Query OK, 0 rows affected (0.00 sec)


// 查看用户admins的权限

mysql> show grants for admins;

+--------------------------------------------------------------------------------+

| Grants for admins@%                                                            |

+--------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'admins'@'%'                                             |

| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON `test`.* TO 'admins'@'%' |

+--------------------------------------------------------------------------------+

2 rows in set (0.00 sec)


// 刷新权限(使设置的权限生效)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)



// 查看root的权限

mysql> show grants for root;

+-------------------------------------------+

| Grants for root@%                         |

+-------------------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' |

+-------------------------------------------+



以下是用户可以享受的常见可能权限的简短列表。

ALL PRIVILEGES - 正如我们前面所看到的,这将允许MySQL用户访问指定的数据库(或者如果系统中没有选择数据库)

CREATE-允许他们创建新的表或数据库

DROP-允许他们删除表或数据库

DELETE-允许他们从表中删除行

INSERT-允许它们向表中插入行

SELECT-允许他们使用Select命令来读取数据库

UPDATE-允许他们更新表行

GRANT OPTION - 允许他们授予或删除其他用户的权限

要向特定用户提供权限,可以使用此框架:

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;

如果要向其授予对任何数据库或任何表的访问权限,请确保在数据库名称或表名称的地方放置星号(*)。

每次更新或更改权限时,请务必使用Flush Privileges命令。

如果您需要撤消权限,则结构与授予的结构几乎相同:

REVOKE [type of permission] ON [database name].[table name] FROM ‘[username]’@‘localhost’;

正如您可以使用DROP删除数据库一样,您可以使用DROP完全删除用户:

DROP USER ‘demo’@‘localhost’;

要测试您的新用户,请通过键入注销

quit

并使用此命令在终端中重新登录:

mysql -u [username]-p

上一篇:手动安装MYSQL5.7.20-winx64数据库方法

下一篇:sql server 2000/2005/2008 数据库 更改表的所有者为dbo

讨论数量:1

天涯网魂 3 杠 5 星2019-02-02 16:06:31

mysql 用户及权限管理 小结:https://www.cnblogs.com/SQL888/p/5748824.html

MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用。如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接。

在 MySQL 命令行模式下输入如下命令可以为 MySQL 创建一个新用户:

1
CREATE USER username IDENTIFIEDBY 'password';

新用户创建完成,但是此刻如果以此用户登陆的话,会报错,因为我们还没有为这个用户分配相应权限,分配权限的命令如下:

1
GRANT ALL PRIVILEGES ON *.*TO 'username'@'localhost' IDENTIFIEDBY 'password';

授予username用户在所有数据库上的所有权限。

如果此时发现刚刚给的权限太大了,如果我们只是想授予它在某个数据库上的权限,那么需要切换到root 用户撤销刚才的权限,重新授权:

1
2
EVOKEALL PRIVILEGES ON *.*FROM 'username'@'localhost';
GRANT ALL PRIVILEGES ON wordpress.*TO 'username'@'localhost' IDENTIFIEDBY 'password';

甚至还可以指定该用户只能执行 select 和 update 命令:

1
GRANT SELECT,UPDATE ON wordpress.*TO 'username'@'localhost' IDENTIFIEDBY 'password';

这样一来,再次以username登陆 MySQL,只有wordpress数据库是对其可见的,并且如果你只授权它select权限,那么它就不能执行delete 语句。

另外每当调整权限后,通常需要执行以下语句刷新权限:

1
FLUSHPRIVILEGES;

删除刚才创建的用户:

1
DROP USER username@localhost;

仔细上面几个命令,可以发现不管是授权,还是撤销授权,都要指定响应的host(即 @ 符号后面的内容),因为以上及格命令实际上都是在操作mysql 数据库中的user表,可以用如下命令查看相应用户及对应的host:

1
SELECT User, HostFROM user;

请先登录再发表讨论。 2024-03-19

天涯网魂
3 杠 5 星
TA 的文章
TA 的随言
TA 的资源链