Mysql用戶與權限管理操做

1、基本的用戶管理mysql

       新安裝的mysql默認只有root用戶,若是全部應用都使用root用戶,將涉及到許多的權限與安全問題,因此須要建立不一樣的用戶並設置密碼來執行不一樣的操做。sql


       mysql中的用戶與密碼存在mysql庫的user表裏。數據庫

登陸mysql使用以下命令查看用戶及密碼安全

mysql>select User,Password from mysql.user;


下面演示建立、刪除用戶與密碼設置ide

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('密碼')方式爲要設置的密碼進行加密,否則就會明文保存,不安全。spa


       咱們還能夠在建立用戶的同時設置密碼對象

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


3.查看新建的用戶以及設置的密碼input

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

   

4.若是須要更改用戶的名稱,可使用rename user改變用戶名稱it

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)


2、基本的權限管理

以上的命令是用戶的建立與設置密碼等,雖然建立的用戶,可是仍是不能登陸,必須授予權限。
演示登陸

# 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)
相關文章
相關標籤/搜索