mysql基础(31)_用户权限管理之用户管理

用户权限管理

用户权限管理:在不同的项目中给不同的角色(开发者)不同的操作权限,为了保证数据库数据的安全。
通常,一个用户的密码不会长期不变,所以需要经常性的变更数据库用户密码来确保用户本身安全(mysql客户端用户)

用户管理

mysql需要客户端进行连接认证才能进行服务器操作,需要用户信息,mysql中所有的用户信息都是保存在mysql数据库下的user表中。

mysql> select * from mysql.user\G
*************************** 1. row ***************************
                  Host: localhost
                  User: root
              Password: *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B
           Select_priv: Y
           Insert_priv: Y
           Update_priv: Y
           Delete_priv: Y
           Create_priv: Y
             Drop_priv: Y
           Reload_priv: Y
         Shutdown_priv: Y
          Process_priv: Y
             File_priv: Y
            Grant_priv: Y
       References_priv: Y
            Index_priv: Y
            Alter_priv: Y
          Show_db_priv: Y

默认的,在安装mysql的时候,如果不选择创建匿名用户,那么意味着所有的用户只有一个:root超级用户

mysql> desc mysql.user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field                  | Type                              | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host                   | char(60)                          | NO   | PRI |         |       |
| User                   | char(16)                          | NO   | PRI |         |       |
| Password               | char(41)                          | NO   |     |         |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Insert_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Update_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Delete_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Create_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Drop_priv              | enum('N','Y')                     | NO   |     | N       |       |
| Reload_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Shutdown_priv          | enum('N','Y')                     | NO   |     | N       |       |
| Process_priv           | enum('N','Y')                     | NO   |     | N       |       |
| File_priv              | enum('N','Y')                     | NO   |     | N       |       |
| Grant_priv             | enum('N','Y')                     | NO   |     | N       |       |
| References_priv        | enum('N','Y')                     | NO   |     | N       |       |
| Index_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Alter_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Show_db_priv           | enum('N','Y')                     | NO   |     | N       |       |

在mysql中,对用户管理中,是由对应的Host和User共同组成主键来区分用户。
User:代表用户的用户名
Host:代表本质是允许访问的客户端(ip或者主机地址),如果host使用%代表所有的用户(客户端)都可以访问

创建用户

理论上讲可以采用两种方式创建用户:
1、直接使用root用户在mysql.user表中插入记录(不推荐)
2、专门创建用户的SQL指令
基本语法:create user 'user_name'@'host' identified by 'password’;
主机地址:可以用''或者'%'来匹配

mysql> create user 'user1'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> select * from mysql.user where user='user1'\G;
*************************** 1. row ***************************
                  Host: %
                  User: user1
              Password: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
           Select_priv: N
           Insert_priv: N
           Update_priv: N
           Delete_priv: N
           Create_priv: N
             Drop_priv: N
           Reload_priv: N
         Shutdown_priv: N
          Process_priv: N
             File_priv: N
            Grant_priv: N
       References_priv: N

user_name:要创建用户的名字。
host:表示要这个新创建的用户允许从哪台机登陆,如果只允许从本机登陆,则填'localhost',如果允许从远程登陆,则填'%'
password:新创建用户的登陆数据库密码,如果没密码可以不写。
新创建的用户的权限很基本都是N,表示没有权限,因为还要为用户授予权限。

简化版创建用户(谁都可以访问而且不需要密码,通常不会这么做,不安全)
create user ‘user_name';
1、不限定客户端ip
2、没有密码的用户 

mysql> create user user123;
Query OK, 0 rows affected (0.00 sec)

mysql> \q;
Bye
-- 登入成功
C:\Users\47876>mysql -u user123
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.5.53 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, 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> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+
2 rows in set (0.00 sec)

删除用户

drop user '用户名'@'主机名’;

-- user123中没权限删除用户
mysql> drop user user123;
ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation

-- 在root中删除则成功
mysql> drop user user123;
Query OK, 0 rows affected (1.55 sec)

修改用户密码

mysql中提供了多种修改的方式,基本上都必须使用对应提供的一个系统函数:password(),需要靠该函数对密码进行加密处理。
1、使用专门的修改密码的指令
基本语法:set password for 用户=password('新的明文密码');
2、使用更新语句update来修改表
基本语法:update mysql.user set password = password('新的明文密码) where user = "" and host ="";

-- 修改密码
mysql> set password for user1=password('654321');
Query OK, 0 rows affected (1.66 sec)

mysql> update mysql.user set password = password('13579') where user = "user1" and host ="%";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值