安全管理

1.访问控制

  • MYSQL所有的用户账号信息都存储在一个名为MYSQL的数据库中,这个数据库里有一个名为user的数据表,其包含了所有的用户账号。如图

  • 在对MYSQL的日常管理中,为避免恶意用户冒名顶替root账号操纵数据库,通常需要创建一系列具备适当权限的账号,而尽可能减少或者不用root账号登陆系统,以此来确保数据的安全访问。

    mysql> select user from mysql.user;
    +------+
    | user |
    +------+
    | root |
    | root |
    | root |
    +------+
    3 rows in set
    

2.用户管理

2.1.创建用户账号

  • 语法:
CREATE USER user_specification [,..] 
  • User_specification 的格式:
User IDENTIFIED BY [PASSWORD] ‘password’ 
| IDENTIFIED WITH auth_plugin [AS ‘auth_string’] 

  • User: 指定创建的用户账号,其格式为 ’user_name’@’host_name’.这里的user_name是用户名, host_name 为主机名,即用户连接MYSQL时所在主机的名称。如果在创建过程中只给出账户中的用户名,而没指定主机名,则系统默认主机名为”%”,表示一组主机。

  • IDENTIFIED BY 子句: 用于指定用户账号对应的口令,若该账号无口令,则可省略此子句。

  • 可选项PASSWORD: 用于指定散列口令,若口令为明文,则忽略PASSWORD关键字。

  • Password: 指定用户账号的口令,在IDENTIFIED BY 关键字或PASSWORD关键字之后,给定的口令值可以是字母和数字组成的明文, 也可以是通过PASSWORD()得到的散列值。

  • IDENTIFIED BY子句:用于指定验证账号的认证插件。

  • Auto_plugin: 制定认证插件的名称。

  • 注意:

    i. 使用创建用户的语句,需具备MYSQL的mysql数据库的INSERT权限或者全局CREATE USER 权限。

    ii. 如果创建的用户已存在,则会报错

    iii. 如果两个用户拥有相同的用户名和不同的主机名,MYSQL会视为他们为不同用户并允许为其分配不同的权限

    iv. 新创建的用户拥有的权限极少,可登录MYSQL,可使用无需权限的操作。

    j) 举例:

添加两个新用户,zhangsan和lisi,其主机名均为localhost。Zhangsan的口令为明文“123”, lisi的口令为对应明文“456”的散列值。

mysql> select password('456');
+-------------------------------------------+
| password('456')                           |
+-------------------------------------------+
| *531E182E2F72080AB0740FE2F2D689DBE0146E04 |
+-------------------------------------------+
1 row in set
mysql> create user 'zs'@'localhost' identified by '123';
Query OK, 0 rows affected
mysql> select user from mysql.user;
+------+
| user |
+------+
| root |
| root |
| root |
| zs   |
+------+
4 rows in set

2.2删除用户

a) DROP USER user[, user]….
b) 其可用于删除一个或者多个用户,并消除其权限
c) 在删除操作中,如果没有明确的给出账户的主机名,则该注聚名会被默认为%
d) 用户的删除不会影响到他们创建的表,索引,以及其他数据库对象,这是因为MYSQL并没有记录是谁创建了这些对象。
e) 举例:删除前面创建的对象

mysql> drop user zs@localhost;
Query OK, 0 rows affected
mysql> select user from mysql.user;
+------+
| user |
+------+
| root |
| root |
| root |
+------+
3 rows in set

2.3修改用户账号

  • 语法:
RENAME USER old_nuser TO new_user [, …] 
  • Old_user: 系统中已存在的MYSQL账号

  • c) New_user: 新的用户账号

  • d) 注意:

    i. RENAME语句只用于对原有MYSQL账户进行重命名。

    ii. 若要使用该语句,需具备对mysql数据库的UPDATE权限或者全局CREATE USER权限

    iii. 倘若旧账户不存在或者新账户已存在,则语句执行会报错

e) 举例:将zs修改为ls

mysql> create user 'zs'@'localhost' identified by '123';
Query OK, 0 rows affected
mysql> select user from mysql.user;
+------+
| user |
+------+
| root |
| root |
| root |
| zs   |
+------+
4 rows in set

mysql> rename user 'zs'@'localhost' to 'ls'@'localhost';
Query OK, 0 rows affected
mysql> select user from mysql.user;
+------+
| user |
+------+
| root |
| root |
| ls   |
| root |
+------+
4 rows in set

2.4 修改用户口令

语法:

SET PASSWORD [FOR user] = PASSWORD (‘new_password’) | ‘encrypted password’ 

b) FOR子句:指定欲修改口令的用户。该子句为可选项,如不加该子句,则表示修改当前用户的口令。
c) PASSWORD (‘new_password’):表示用函数PASSWORD()设置新口令
d) Encrypted password: 表示已被函数PASSWORD加密过的口令值。
e) C与d只能选择一项,且必须选择一项进行修改口令

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值