MySql用户权限基础讲解

2020年06月04日 82点热度 0人点赞 0条评论

1、登录mysql

mysql -u root -p

2、查看现有用户

mysql> select host,user,authentication_string from mysql.user;
+-----------+---------------+-------------------------------------------+
| host      | user          | authentication_string                     |
+-----------+---------------+-------------------------------------------+
| localhost | root          | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| %         | root          | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+---------------+-------------------------------------------+
4 rows in set (0.00 sec)

3、新建用户

格式:create user "username"@"host" identified by "password";

mysql> create user "TopABu.com"@"localhost" identified by "123456";
Query OK, 0 rows affected (0.01 sec)

mysql> create user "TopABu.com"@"192.168.71.10" identified by "123456";
Query OK, 0 rows affected (0.01 sec)

mysql> create user "TopABu.com"@"%" identified by "123456";
Query OK, 0 rows affected (0.01 sec)

解释

  • host=localhost:本地登录
  • host=ip地址:ip地址登录
  • host=%:为外网ip地址、任意地址登录,即远程访问mysql

4、删除用户

格式:drop user "username"@"host";

5、授权

格式:grant privileges on databasename.tablename to 'username'@'host' IDENTIFIED BY 'PASSWORD';

1. grant命令说明
  • privileges :权限列表
    可以是all privileges:所有权限
    也可以是select,insert,update,delete 等权限,多个权限的名词,相互之间用逗号分开
    
  • on:用来指定权限针对哪些库和表
  • *.*:前面的*号指定数据库名,后面的*指定表名
  • to:表示将权限赋予某个用户
    topabu@localhost,表示topabu用户,@后面接限制的主机,可以是ipip段、域名以及%
    需要注意的是,这里的%有的版本是不支持的,遇到这个问题就再加一个localhost的用户就可以了
    
  • identified by:指定用户的登录密码,可省略该项
  • with grant option:表示该用户可以将自己的权限授权给别人
2. 授权原则说明
  • a、只授予能满足需要的最小权限,防止用户干坏事。比如用户只是需要查询,那就只给select权限就可以了,不要给用户赋予update、insert或者delete权限。
  • b、创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。
  • c、初始化数据库的时候删除没有密码的用户。安装完数据库的时候会自动创建一些用户,这些用户默认没有密码。
  • d、为每个用户设置满足密码复杂度的密码。
  • e、定期清理不需要的用户。回收权限或者删除用户。
mysql> grant all privileges on *.* to "TopABu.com"@"%" identified by "123456";
Query OK, 0 rows affected, 1 warning (0.00 sec)
3. 更新权限列表
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

6、查看权限

mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)

查看某个用户的权限

mysql> show grants for 'TopABu.com'@'%';
+-------------------------------------------------+
| Grants for TopABu.com@%                         |
+-------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'TopABu.com'@'%' |
+-------------------------------------------------+
1 row in set (0.00 sec)

7、删除权限

格式:revoke privileges on databasename.tablename from 'username'@'host';

mysql> revoke all privileges on *.* from 'TopABu.com'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for 'TopABu.com'@'%';
+----------------------------------------+
| Grants for TopABu.com@%                |
+----------------------------------------+
| GRANT USAGE ON *.* TO 'TopABu.com'@'%' |
+----------------------------------------+
1 row in set (0.00 sec)

8、更改用户名

mysql> rename user 'TopABu.com'@'%' to 'www.topabu.com'@'%';
Query OK, 0 rows affected (0.00 sec)

9、修改密码

    1. 用set password命令
    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');
    
    Query OK, 0 rows affected (0.00 sec)
    
    1. 用mysqladmin

    格式:mysqladmin -u用户名 -p旧密码 password 新密码

    [root@master ~]# mysqladmin -uroot -p123456 password 1234abcd
    
    
    1. 用update直接编辑user表

10、删除数据库

普通删除
drop database DataBaseName
强制删除
drop database if exists DataBaseName

11、MYSQL权限详细分类:

全局管理权限:
FILE: MySQL服务器上读写文件。 
PROCESS: 显示或杀死属于其它用户的服务线程。 
RELOAD: 重载访问控制表,刷新日志等。 
SHUTDOWN: 关闭MySQL服务。
数据库/数据表/数据列权限:
ALTER: 修改已存在的数据表(例如增加/删除列)和索引。 
CREATE: 建立新的数据库或数据表。 
DELETE: 删除表的记录。 
DROP: 删除数据表或数据库。 
INDEX: 建立或删除索引。 
INSERT: 增加表的记录。 
SELECT: 显示/搜索表的记录。 
UPDATE: 修改表中已存在的记录。
特别的权限:
ALL: 允许做任何事(root一样) 
USAGE: 只允许登录,其它什么也不允许做。

阿布

源自灵魂深处的自我救赎。

文章评论