Mysql用户与权限管理操作

一、基本的用户管理

       新安装的mysql默认只有root用户,如果所有应用都使用root用户,将涉及到许多的权限与安全问题,所以需要创建不同的用户并设置密码来执行不同的操作。


       mysql中的用户与密码存在mysql库的user表里。

登录mysql使用如下命令查看用户及密码

mysql>select User,Password from mysql.user;


下面演示创建、删除用户与密码设置

1.创建用户
mysql> create user  mytest1;
Query OK, 0 rows affected (0.01 sec)


2.设置密码

mysql> set password for mytest1 = password('mi123123');
Query OK, 0 rows affected (0.00 sec)

说明:1.使用“for  username”为指定用户设置密码,不然就是为当前用户设置密码。

     2.使用password('密码')方式为要设置的密码进行加密,不然就会明文保存,不安全。


       我们还可以在创建用户的同时设置密码

mysql> create user  mytest2 identified by 'my123123';
Query OK, 0 rows affected (0.00 sec)


3.查看新建的用户以及设置的密码

mysql> select User,Password from user;
+---------+-------------------------------------------+
| User    | Password                                  |
+---------+-------------------------------------------+
| root    |                                           |
| root    | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| mytest1 | *BB9971EEFFFEF5DB7694D41750FC84489F86A753 |
+---------+-------------------------------------------+

   

4.如果需要更改用户的名称,可以使用rename user改变用户名称

mysql> rename user mytest1 to mytest3;
Query OK, 0 rows affected (0.00 sec)


5.不再需要的用户可以进行删除

mysql> drop user mytest2;
Query OK, 0 rows affected (0.00 sec)


二、基本的权限管理

以上的命令是用户的创建与设置密码等,虽然创建的用户,但是还是不能登录,必须授予权限。
演示登录

# mysql -u mytest3 -p'my123123'
ERROR 1045 (28000): Access denied for user 'mytest3'@'localhost' (using password: YES)


权限包括2个部分:
1)是否具有连接到mysql的权限;
2)是否具有对所执行动作、操作对象的权限;
对操作对象的权限分为:全局层级、数据库层级、表层级、列层级等
使用grant进行授权,使用revoke收回授权
grant 权限  on  权限层级  to   用户名@主机   identified by '密码';
1)权限可以单独指定一些权限,如查询、更新、删除等,或者所有权限"all  privileges";
2)权限层级可以设置为全局(*.*)、数据库级(mydbname.*)、表层级(mydbname.tablename)等;
3)用户名可以是之前建好的,如果不存在会自动创建新用户;
4)主机可以是本机('localhost'),可以是一个网段('192.168.1.%'),或者任意主机('%');

5)identified by  设置用户访问密码,是可选的,如果没有,将不需要密码访问。


1.授权mydbuser用户在本机访问mysql时,对mydbtest库的所有表具有任意权限

mysql> grant all on  mydbtest.* to  mydbuser@'localhost' identified by 'my123';
Query OK, 0 rows affected (0.00 sec)

       使用新用户访问

# mysql -u mydbuser -p'my123'
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.1.61 Source distribution
Copyright (c) 2000, 2011, 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.只为mydbuser2在mydbtest数据库中授予select、update、drop权限

mysql> grant select,update,drop on  mydbtest.* to  mydbuser2@'localhost' identified by 'my123';
Query OK, 0 rows affected (0.00 sec)


3.当权限不在需要的时候,使用revoke收回用户权限,可以全部收回,也可部分收回

首先来查看mydbuser在mydbtest中的权限,在mysql库中,有个db表,记录着每个数据库及对应用户的权限

mysql> select * from mysql.db where user='mydbuser'\G
*************************** 1. row ***************************
                 Host: localhost
                   Db: mydbtest
                 User: mydbuser
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y
          Delete_priv: Y
          Create_priv: Y
            Drop_priv: Y
           Grant_priv: N
      References_priv: Y
           Index_priv: Y
           Alter_priv: Y
Create_tmp_table_priv: Y
     Lock_tables_priv: Y
     Create_view_priv: Y
       Show_view_priv: Y
  Create_routine_priv: Y
   Alter_routine_priv: Y
         Execute_priv: Y
           Event_priv: Y
         Trigger_priv: Y
1 row in set (0.00 sec)


4.收回mydbuser对mydbtest库的delete、drop、index操作权限。

mysql> revoke delete,drop,index on mydbtest.* from mydbuser@'localhost';
Query OK, 0 rows affected (0.00 sec)

revoke与grant使用方法类似,只需要将to改成from即可。


5.收回mydbuser对mydbtest库所有的操作权限

mysql> revoke all on mydbtest.* from mydbuser@localhost;
Query OK, 0 rows affected (0.00 sec)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章