1. <var id="fe6gj"></var>

    <rp id="fe6gj"><nav id="fe6gj"></nav></rp>

    <noframes id="fe6gj"><cite id="fe6gj"></cite>

    <ins id="fe6gj"><button id="fe6gj"><p id="fe6gj"></p></button></ins>
    1. <tt id="fe6gj"><i id="fe6gj"><sub id="fe6gj"></sub></i></tt>
        始創于2000年 股票代碼:831685
        咨詢熱線:0371-60135900 注冊有禮 登錄
        • 掛牌上市企業
        • 60秒人工響應
        • 99.99%連通率
        • 7*24h人工
        • 故障100倍補償
        您的位置: 網站首頁 > 幫助中心>文章內容

        MySQL - 用戶及權限管理

        發布時間:  2012/7/27 17:35:02

        $ mysql -u root -p
        password:

        mysql> create database test; # 創建數據庫
        Query OK, 1 row affected (0.00 sec)

        mysql> show databases; # 查看數據庫是否創建成功
        +--------------------+
        | Database           |
        +--------------------+
        | information_schema |
        | mysql              |
        | test               |
        +--------------------+
        3 rows in set (0.00 sec)

        mysql> grant all on test.* to user1@'%' identified by '123456' with grant option; # 創建特權管理用戶
        Query OK, 0 rows affected (0.00 sec)

        mysql> select user,host from mysql.user; # 查看用戶創建是否成功
        +------------------+-----------+
        | user             | host      |
        +------------------+-----------+
        | user1            | %         |
        | root             | 127.0.0.1 |
        | debian-sys-maint | localhost |
        | root             | localhost |
        | root             | server    |
        +------------------+-----------+
        5 rows in set (0.00 sec)

        mysql> show grants for user1; # 查看用戶權限
        +--------------------------------------------------------------------------------------------------+
        | Grants for user1@%                                                                               |
        +--------------------------------------------------------------------------------------------------+
        | GRANT USAGE ON *.* TO 'user1'@'%' IDENTIFIED BY PASSWORD '*6BB...2CA2AD9'                        |
        | GRANT ALL PRIVILEGES ON `test`.* TO 'user1'@'%' WITH GRANT OPTION                                |
        +--------------------------------------------------------------------------------------------------+
        2 rows in set (0.00 sec)
        GRANT 語法:

        GRANT privileges (columns)
            ON what
            TO user IDENTIFIED BY "password"
            WITH GRANT OPTION
        權限列表: ALTER: 修改表和索引。 CREATE: 創建數據庫和表。 DELETE: 刪除表中已有的記錄。 DROP: 拋棄(刪除)數據庫和表。 INDEX: 創建或拋棄索引。 INSERT: 向表中插入新行。 REFERENCE: 未用。 SELECT: 檢索表中的記錄。 UPDATE: 修改現存表記錄。 FILE: 讀或寫服務器上的文件。 PROCESS: 查看服務器中執行的線程信息或殺死線程。 RELOAD: 重載授權表或清空日志、主機緩存或表緩存。 SHUTDOWN: 關閉服務器。 ALL: 所有權限,ALL PRIVILEGES同義詞。 USAGE: 特殊的 "無權限" 權限。用戶賬戶包括 "username" 和 "host" 兩部分,后者表示該用戶被允許從何地接入。user1@'%' 表示任何地址,默認可以省略。還可以是 "user1@192.168.1.%"、"user1@%.abc.com" 等。數據庫格式為 db@table,可以是 "test.*" 或 "*.*",前者表示 test 數據庫的所有表,后者表示所有數據庫的所有表。

        子句 "WITH GRANT OPTION" 表示該用戶可以為其他用戶分配權限。

        我們用 root 再創建幾個用戶,然后由 test 數據庫的管理員 user1 為他們分配權限。

        mysql> create user user2 identified by '123456', user3 identified by 'abcd';
        Query OK, 0 rows affected (0.00 sec)

        mysql> select user, host from mysql.user;
        +------------------+-----------+
        | user             | host      |
        +------------------+-----------+
        | user1            | %         |
        | user2            | %         |
        | user3            | %         |
        | root             | 127.0.0.1 |
        | debian-sys-maint | localhost |
        | root             | localhost |
        | root             | server    |
        +------------------+-----------+
        7 rows in set (0.00 sec)
        好了,我們退出改用 user1 登錄并針對 test 數據庫進行操作。

        mysql> quit # 退出
        Bye

        $ mysql -u user1 -p123456 test # 使用新用戶登錄

        mysql> select database(); # 確認當前工作數據庫
        +------------+
        | database() |
        +------------+
        | test       |
        +------------+
        1 row in set (0.00 sec)

        mysql> select current_user(); # 確認當前工作賬戶
        +----------------+
        | current_user() |
        +----------------+
        | user1@%        |
        +----------------+
        1 row in set (0.00 sec)
        繼續,創建一個數據表。

        mysql> create table table1 # 創建表
            -> (
            ->    name varchar(50),
            ->    age integer
            -> );
        Query OK, 0 rows affected (0.02 sec)

        mysql> show tables; # 查看表是否創建成功
        +----------------+
        | Tables_in_test |
        +----------------+
        | table1         |
        +----------------+
        1 row in set (0.00 sec)

        mysql> describe table1; # 查看表結構
        +-------+-------------+------+-----+---------+-------+
        | Field | Type        | Null | Key | Default | Extra |
        +-------+-------------+------+-----+---------+-------+
        | name  | varchar(50) | YES  |     | NULL    |       |
        | age   | int(11)     | YES  |     | NULL    |       |
        +-------+-------------+------+-----+---------+-------+
        2 rows in set (0.00 sec)

        mysql> insert into table1 values('Tom', 20); # 插入記錄
        Query OK, 1 row affected (0.00 sec)

        mysql> select * from table1; # 查詢記錄
        +------+------+
        | name | age  |
        +------+------+
        | Tom  |   20 |
        +------+------+
        1 row in set (0.00 sec)
        接下來我們為 user2, user3 分配權限。

        mysql> grant select on test.* to user2; # 為 user2 分配 SELECT 權限。
        Query OK, 0 rows affected (0.00 sec)

        mysql> grant select on test.* to user3; # 為 user3 分配 SELECT 權限。
        Query OK, 0 rows affected (0.00 sec)

        mysql> grant insert, update on test.* to user2; # 再為 user2 增加 INSERT, UPDATE 權限。
        Query OK, 0 rows affected (0.00 sec)
        好了,我們退出,切換成 user2 操作看看。

        $ mysql -u user2 -p123456

        mysql> use test; # 切換工作數據庫
        Reading table information for completion of table and column names
        You can turn off this feature to get a quicker startup with -A

        Database changed

        mysql> select database(); # 驗證當前工作數據庫
        +------------+
        | database() |
        +------------+
        | test       |
        +------------+
        1 row in set (0.00 sec)

        mysql> select user(); # 驗證當前賬戶
        +-----------------+
        | user()          |
        +-----------------+
        | user2@localhost |
        +-----------------+
        1 row in set (0.00 sec)

        mysql> show grants for user2; # 查看當前用戶權限,顯然后來添加的 INSERT, UPDATE 被添加了。
        +--------------------------------------------------------------------------------------------------+
        | Grants for user2@%                                                                               |
        +--------------------------------------------------------------------------------------------------+
        | GRANT USAGE ON *.* TO 'user2'@'%' IDENTIFIED BY PASSWORD '*6BB837....2C9'                        |
        | GRANT SELECT, INSERT, UPDATE ON `test`.* TO 'user2'@'%'                                          |
        +--------------------------------------------------------------------------------------------------+
        2 rows in set (0.00 sec)
        進行操作測試。

        mysql> insert into table1 values("Jack", 21); # INSERT 操作成功
        Query OK, 1 row affected (0.00 sec)

        mysql> update table1 set age=22 where name='Jack'; # UPDATE 操作成功
        Query OK, 1 row affected (0.00 sec)
        Rows matched: 1  Changed: 1  Warnings: 0

        mysql> select * from table1; # SELECT 操作成功
        +------+------+
        | name | age  |
        +------+------+
        | Tom  |   20 |
        | Jack |   22 |
        +------+------+
        2 rows in set (0.00 sec)

        mysql> delete from table1 where age=22; # DELETE 操作無權限
        ERROR 1142 (42000): DELETE command denied to user 'user2'@'localhost' for table 'table1'
        我們切換回 user1 管理賬戶,移除 user2 的 UPDATE 權限看看。

        $ mysql -u user1 -p123456 test

        mysql> revoke update on test.* from user2; # 移除 UPDATE 權限
        Query OK, 0 rows affected (0.00 sec)
        再次切換回 user2。

        $ mysql -u user2 -p123456 test

        mysql> show grants for user2; # UPDATE 權限被移除
        +--------------------------------------------------------------------------------------------------+
        | Grants for user2@%                                                                               |
        +--------------------------------------------------------------------------------------------------+
        | GRANT USAGE ON *.* TO 'user2'@'%' IDENTIFIED BY PASSWORD '*6B...2AD9'                            |
        | GRANT SELECT, INSERT ON `test`.* TO 'user2'@'%'                                                  |
        +--------------------------------------------------------------------------------------------------+
        2 rows in set (0.00 sec)

        mysql> update table1 set age=23 where name='Jack'; # 不在擁有 UPDATE 權限
        ERROR 1142 (42000): UPDATE command denied to user 'user2'@'localhost' for table 'table1'
        好了,到此我們基本完成了創建用戶和分配權限的操作。接下來,我們回到 root 進行修改用戶密碼和刪除用戶操作。

        $ mysql -u root -p123456

        mysql> set password for user3=password('abcabc'); # 修改用戶 user3 密碼
        Query OK, 0 rows affected (0.00 sec)

        mysql>flush privileges; # 刷新權限表(通常只在直接修改相關管理數據表后需要該操作)
        Query OK, 0 rows affected (0.00 sec)

        mysql> revoke all on *.* from user2; # 移除 user2 在所有數據庫上的權限
        Query OK, 0 rows affected (0.00 sec)

        mysql> drop user user2; # 刪除 user2 賬戶
        Query OK, 0 rows affected (0.00 sec)

        mysql> select user,host from mysql.user; # 驗證刪除結果
        +------------------+-----------+
        | user             | host      |
        +------------------+-----------+
        | user1            | %         |
        | user3            | %         |
        | root             | 127.0.0.1 |
        | debian-sys-maint | localhost |
        | root             | localhost |
        | root             | server    |
        +------------------+-----------+
        6 rows in set (0.00 sec)
        用戶 user2 無法再次使用。

        $ mysql -u user2 -p123456 test

        ERROR 1045 (28000): Access denied for user 'user2'@'localhost' (using password: YES)
        試試 user3。

        $ mysql -u user3 -pabc test # 連接失!哦,對了,我們修改了密碼。
        ERROR 1045 (28000): Access denied for user 'user3'@'localhost' (using password: YES)

        $ mysql -u user3 -pabcabc test # 新密碼成功

        mysql> select * from table1; # SELECT 操作成功
        +------+------+
        | name | age  |
        +------+------+
        | Tom  |   20 |
        | Jack |   22 |
        +------+------+
        2 rows in set (0.00 sec)
        要修改自己的密碼直接執行 "set password = password('new_password');" 即可。

        ------- 摘要 --------------------------------------

        創建用戶:
        GRANT insert, update ON testdb.* TO user1@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
        CREATE USER user2 IDENTIFIED BY 'password';
        分配權限:
        GRANT select ON testdb.* TO user2;
        查看權限:
        SHOW GRANTS FOR user1;
        修改密碼:
        SET PASSWORD FOR user1 = PASSWORD('newpwd');
        SET PASSWORD = PASSWORD('newpwd');
        移除權限:
        REVOKE all ON *.* FROM user1;
        刪除用戶:
        DROP USER user1;
        數據庫列表:
        SHOW DATABASES;
        數據表列表:
        SHOW TABLES;
        當前數據庫:
        SELECT DATABASE();
        當前用戶:
        SELECT USER();
        數據表結構:
        DESCRIBE table1;
        刷新權限:
        FLUSH PRIVILEGES;


        本文出自:億恩科技【www.endtimedelusion.com】

        服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

      1. 您可能在找
      2. 億恩北京公司:
      3. 經營性ICP/ISP證:京B2-20150015
      4. 億恩鄭州公司:
      5. 經營性ICP/ISP/IDC證:豫B1.B2-20060070
      6. 億恩南昌公司:
      7. 經營性ICP/ISP證:贛B2-20080012
      8. 服務器/云主機 24小時售后服務電話:0371-60135900
      9. 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
      10. 專注服務器托管17年
        掃掃關注-微信公眾號
        0371-60135900
        Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
          0
         
         
         
         

        0371-60135900
        7*24小時客服服務熱線

         
         
        av不卡不卡在线观看_最近2018年中文字幕_亚洲欧美一区二区三区_一级A爱做片免费观看国产_日韩在线中文天天更新_伊人中文无码在线