欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL如何新建用戶并授權(quán)

 更新時間:2024年10月09日 16:52:02   作者:Chenry.r  
本文主要介紹了如何在MySQL中創(chuàng)建新用戶并管理其權(quán)限,包括增刪改查、創(chuàng)建表、刪除表等操作,文中詳細說明了MySQL 5.7.18和MySQL 8.0版本中的權(quán)限配置,以及如何根據(jù)需要添加或刪除權(quán)限的步驟,旨在提供實用的數(shù)據(jù)庫管理技巧

前言

有些時候因開發(fā)需要,管理數(shù)據(jù)庫賬號和賬號對應的權(quán)限和密碼,對自己的操作進行記錄,

主要操作的就是想創(chuàng)建一個新用戶,并賦予,增刪改查、創(chuàng)建表、刪除表、等一些權(quán)限,并允許任何主句連接。

一、技術(shù)講解

1.MySQL基礎(chǔ)信息

mysql> SELECT VERSION();                     -- 查看MySQL版本 
+-----------+
| VERSION() |
+-----------+
| 5.7.18    |
+-----------+
1 row in set (0.00 sec)

mysql> select user,host from mysql.user;      -- 查詢MySQL的所有用戶信息
+-----------+-----------+
| user      | host      |
+-----------+-----------+
| mysql.sys | localhost |
| root      | localhost |
+-----------+-----------+
2 rows in set (0.00 sec)

mysql> SHOW GRANTS FOR 'root'@'localhost';    -- 查看'root'@'localhost'對應的權(quán)限
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> 

從上面的代碼上不難看到我使用的MySQL版本是5.7.18,有一個只能本地連接的超管(root);

其中'root'@'localhost'對應的權(quán)限解釋

這些是 MySQL 數(shù)據(jù)庫中的授權(quán)語句,用于授予用戶權(quán)限。下面是這些語句的解釋:

1. GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION:
   1.GRANT ALL PRIVILEGES:授予所有權(quán)限給指定的用戶。
   2.ON *.*:作用于所有的數(shù)據(jù)庫和表。
   3.TO 'root'@'localhost':將權(quán)限授予用戶名為 'root'、主機名為 'localhost' 的用戶。
   4.WITH GRANT OPTION:授予該用戶授權(quán)其他用戶的權(quán)限。
2. GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION:
   1.GRANT PROXY:授予用戶代理權(quán)限,允許用戶以其他用戶的身份進行數(shù)據(jù)庫操作。
   2.ON ''@'':代理用戶為空,即允許任何用戶代理任何其他用戶。
  3.TO 'root'@'localhost':將代理權(quán)限授予用戶名為 'root'、主機名為 'localhost' 的用戶。
  4.WITH GRANT OPTION:授予該用戶授權(quán)其他用戶的權(quán)限。
總結(jié)起來,這些語句的作用是授予用戶 'root'@'localhost' 所有的數(shù)據(jù)庫和表的權(quán)限,并允許該用戶授權(quán)其他用戶。同時,還授予了用戶 'root'@'localhost' 代理任何用戶進行數(shù)據(jù)庫操作的權(quán)限。

2.MySQL的權(quán)限

如果在MySQL8.0版本里運行

SHOW GRANTS FOR ‘root'@‘%'; 

不難發(fā)現(xiàn)下面的權(quán)限的 (超級管理員root的權(quán)限)

  • SELECT:允許從數(shù)據(jù)庫中選擇數(shù)據(jù)。
  • INSERT:允許向數(shù)據(jù)庫中插入數(shù)據(jù)。
  • UPDATE:允許更新數(shù)據(jù)庫中的數(shù)據(jù)。
  • DELETE:允許從數(shù)據(jù)庫中刪除數(shù)據(jù)。
  • CREATE:允許創(chuàng)建新的數(shù)據(jù)庫和表。
  • DROP:允許刪除數(shù)據(jù)庫和表。
  • RELOAD:允許重新加載MySQL服務器的配置文件。
  • SHUTDOWN:允許關(guān)閉MySQL服務器。
  • PROCESS:允許查看當前正在運行的查詢進程。
  • FILE:允許讀取和寫入文件系統(tǒng)中的文件。
  • REFERENCES:允許在表之間創(chuàng)建外鍵約束。
  • INDEX:允許創(chuàng)建和刪除索引。
  • ALTER:允許修改表的架構(gòu),例如更改列、添加/刪除約束等。
  • SHOW DATABASES:允許查看所有數(shù)據(jù)庫列表。
  • SUPER:允許執(zhí)行特權(quán)操作,例如設置最大連接數(shù)、關(guān)閉自動關(guān)閉線程等。
  • CREATE TEMPORARY TABLES:允許創(chuàng)建臨時表。
  • LOCK TABLES:允許對表進行鎖定操作,例如排他鎖定或共享鎖定。
  • EXECUTE:允許執(zhí)行存儲過程和函數(shù)。
  • REPLICATION SLAVE:允許作為從服務器進行復制(復制訂閱者)。
  • REPLICATION CLIENT:允許作為復制客戶端,例如從主服務器獲取日志數(shù)據(jù)。
  • CREATE VIEW:允許創(chuàng)建視圖對象。
  • SHOW VIEW:允許查看視圖對象。
  • CREATE ROUTINE:允許創(chuàng)建存儲過程和函數(shù)。
  • ALTER ROUTINE:允許修改存儲過程和函數(shù)的定義。
  • CREATE USER:允許創(chuàng)建新用戶。
  • EVENT:允許創(chuàng)建和管理事件調(diào)度程序。
  • TRIGGER:允許創(chuàng)建和管理觸發(fā)器。
  • CREATE TABLESPACE:允許創(chuàng)建新的表空間。
  • CREATE ROLE:允許創(chuàng)建新角色(用戶組)。
  • DROP ROLE:允許刪除角色(用戶組)。

二、操作步驟

1.創(chuàng)前介紹

1.創(chuàng)建用戶
   create user 'wmlc_dev'@'%' identified by '123456';
   創(chuàng)建用戶名為wmlc_dev,密碼是123456的用戶(wmlc_dev,123456可指定),'wmlc_dev'@'%' 里的%是指允許從任何主機('%')連接;
   如果要是指定主機的話可以把%換為要指定的IP即可
2.授予權(quán)限
   grant select, insert, update, delete on wmlc.* to 'wmlc_dev'@'%';
   授予用戶名為wmlc_dev,數(shù)據(jù)庫為` wmlc `的查詢、插入、更新和刪除操作的權(quán)限。(wmlc 是數(shù)據(jù)庫名稱,可指定);
   如果想授予新用戶在所有數(shù)據(jù)庫和所有表上選擇和鎖定表的權(quán)限的話可改、 wmlc.* 為  *.* 即可
3.刷新權(quán)限緩存
   flush privileges;
4.做連接測試。

2.實操介紹

mysql> CREATE DATABASE wmlc CHARACTER SET utf8;     -- 創(chuàng)建我們需要的數(shù)據(jù)庫
Query OK, 1 row affected (0.00 sec)

mysql> show databases;                              -- 查詢數(shù)據(jù)庫
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wmlc               |
| yeb                |
+--------------------+
6 rows in set (0.02 sec)

mysql> create user 'wmlc_dev'@'%' identified by '123456';  -- 創(chuàng)建新用戶
Query OK, 0 rows affected (0.01 sec)

mysql> select user,host from mysql.user;                 
+-----------+-----------+
| user      | host      |
+-----------+-----------+
| wmlc_dev  | %         |
| mysql.sys | localhost |
| root      | localhost |
+-----------+-----------+
3 rows in set (0.00 sec)

mysql> grant select, insert, update, delete on wmlc.* to 'wmlc_dev'@'%';    -- 給新用戶授權(quán)
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GRANTS FOR 'wmlc_dev'@'%';          --查詢新用戶的權(quán)限
+--------------------------------------------------------------------+
| Grants for wmlc_dev@%                                              |
+--------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'wmlc_dev'@'%'                               |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `wmlc`.* TO 'wmlc_dev'@'%' |
+--------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql>  flush privileges;                          -- 刷新
Query OK, 0 rows affected (0.02 sec)

mysql> exit;
Bye
root@43e97fa6b64f:/# mysql -uwmlc_dev -p123456      -- 測試創(chuàng)建的新賬號是否可以登錄
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.18 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, 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 |
| wmlc               |
+--------------------+
2 rows in set (0.01 sec)

mysql> use wmlc;
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> CREATE TABLE `t_sys_user`  (
    ->   `id` int(11) NOT NULL,
    ->   `username` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '',
    ->   PRIMARY KEY (`id`) USING BTREE
    -> ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- 當我們創(chuàng)建表時會發(fā)現(xiàn)沒有權(quán)限創(chuàng)建
ERROR 1142 (42000): CREATE command denied to user 'wmlc_dev'@'localhost' for table 't_sys_user'

-- 在添加兩個權(quán)限 CREATE:允許創(chuàng)建新的數(shù)據(jù)庫和表。DROP:允許刪除數(shù)據(jù)庫和表。(添加權(quán)限需要切換回可以添加權(quán)限的賬號,這里我就不做過多介紹了,我是又切換回root賬號進行授權(quán)的
mysql> grant CREATE, DROP on wmlc.* to 'wmlc_dev'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GRANTS FOR 'wmlc_dev'@'%'; 
+----------------------------------------------------------------------------------+
| Grants for wmlc_dev@%                                                            |
+----------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'wmlc_dev'@'%'                                             |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON `wmlc`.* TO 'wmlc_dev'@'%' |
+----------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql>  flush privileges;
Query OK, 0 rows affected (0.02 sec)
-- 然后在重新登錄到我們新建的wmlc_dev賬號登錄操作就可以了
mysql> DROP TABLE IF EXISTS `t_sys_user`;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE `t_sys_user`  (
    ->   `id` int(11) NOT NULL,
    ->   `username` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '',
    ->   PRIMARY KEY (`id`) USING BTREE
    -> ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
Query OK, 0 rows affected (0.01 sec)

總結(jié)

有的時候也可能需要給某些賬號刪除一些權(quán)限;添加或刪除那些權(quán)限根據(jù)自己的需求來定。

刪除操作如下:

要刪除MySQL用戶的某些權(quán)限,您可以使用以下方法:

 1.登錄到MySQL服務器,使用root用戶身份打開命令行終端窗口(有其它授權(quán)賬號也可以)。
 2.確定要刪除權(quán)限的用戶。如果要刪除多個用戶的權(quán)限,請在每個用戶名下重復以下步驟。
 3.運行以下命令以撤銷用戶在特定數(shù)據(jù)庫上的特定權(quán)限
   REVOKE <privilege> ON <database_name>.<table_name> FROM '<user_name>@<host>';
 其中,<privilege>是要撤銷的權(quán)限,如SELECT、INSERT、UPDATE、DELETE等。
      <database_name>是要撤銷權(quán)限的數(shù)據(jù)庫名稱,
      <table_name>是要撤銷權(quán)限的表名稱,
      <user_name>是要刪除權(quán)限的用戶名,
      <host>是用戶的主機名。
      
例如,如果要刪除名為 wmlc_dev 的用戶在名為 wmlc 的數(shù)據(jù)庫中所有表的CREATE和DROP 權(quán)限,可以運行以下命令:
REVOKE  CREATE, DROP ON wmlc.* FROM 'wmlc_dev'@'%';
運行以下命令以刷新權(quán)限,以便更改生效:
FLUSH PRIVILEGES;
完成上述步驟后,指定用戶的特定權(quán)限應該已被刪除。
請注意,如果刪除了一個用戶在所有數(shù)據(jù)庫和表上的所有權(quán)限,該用戶將無法連接到MySQL服務器。

實操如下:

-- 我們這里刪除了剛才我們添加兩個權(quán)限 CREATE:允許創(chuàng)建新的數(shù)據(jù)庫和表。DROP:允許刪除數(shù)據(jù)庫和表
mysql> REVOKE  CREATE, DROP ON wmlc.* FROM 'wmlc_dev'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GRANTS FOR 'wmlc_dev'@'%';
+--------------------------------------------------------------------+
| Grants for wmlc_dev@%                                              |
+--------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'wmlc_dev'@'%'                               |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `wmlc`.* TO 'wmlc_dev'@'%' |
+--------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql>  flush privileges;
Query OK, 0 rows affected (0.00 sec)

補充部分:

-- 假設新用戶名為'wmlc_dev'@'%'
mysql> SHOW GRANTS FOR 'wmlc_dev'@'%';
-- 添加權(quán)限(創(chuàng)建數(shù)據(jù)庫/表,刪除數(shù)據(jù)庫/表,查詢,添加,修改,刪除)
mysql> grant CREATE, DROP, select, insert, update, delete on *.* to 'develop'@'%';
-- 撤銷用戶的所有權(quán)限
mysql> REVOKE ALL PRIVILEGES ON *.* FROM 'wmlc_dev'@'%';
mysql> FLUSH PRIVILEGES;
 
-- 刪除用戶在授權(quán)表中的記錄(如果直接在授權(quán)表中添加了記錄)
mysql> DELETE FROM mysql.user WHERE User='wmlc_dev' AND Host='%';
mysql> FLUSH PRIVILEGES;

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mysql中禁用與啟動觸發(fā)器教程【推薦】

    Mysql中禁用與啟動觸發(fā)器教程【推薦】

    在使用MYSQL過程中,經(jīng)常會使用到觸發(fā)器,但是有時使用不當會造成一些麻煩。下面小編給大家?guī)砹薓ysql中禁用與啟動觸發(fā)器教程,感興趣的朋友一起看看吧
    2018-08-08
  • MySQL數(shù)據(jù)庫完全備份與增量備份詳解

    MySQL數(shù)據(jù)庫完全備份與增量備份詳解

    這篇文章主要介紹了MySQL數(shù)據(jù)庫完全備份與增量備份詳解,完全備份就是將數(shù)據(jù)庫中的數(shù)據(jù)及所有對象全部備份,具體詳細內(nèi)容需要的朋友可以參考一下
    2022-08-08
  • mysql中cast函數(shù)用法小結(jié)

    mysql中cast函數(shù)用法小結(jié)

    在MySQL中,CAST函數(shù)用于將一個表達式轉(zhuǎn)換為指定的數(shù)據(jù)類型,本文主要介紹了mysql中cast函數(shù)用法小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • MySQL臨時表的使用方法詳解

    MySQL臨時表的使用方法詳解

    在寫查詢時我們會經(jīng)常用到臨時表來存儲數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MySQL臨時表的使用方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • 簡述MySQL與Oracle的區(qū)別

    簡述MySQL與Oracle的區(qū)別

    Oracle是大型數(shù)據(jù)庫而Mysql是中小型數(shù)據(jù)庫,Oracle市場占有率達40%,Mysql只有20%左右,同時Mysql是開源的而Oracle價格非常高
    2017-06-06
  • MySQL學習之數(shù)據(jù)庫操作DML詳解小白篇

    MySQL學習之數(shù)據(jù)庫操作DML詳解小白篇

    本篇文章非常適合MySQl初學者,主要為大家講解了MySQL數(shù)據(jù)庫的常用操作,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家早日進步升職加薪
    2021-09-09
  • MYSQL中binlog優(yōu)化的一些思考匯總

    MYSQL中binlog優(yōu)化的一些思考匯總

    這篇文章主要給大家介紹了關(guān)于MYSQL中binlog優(yōu)化的一些思考,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-06-06
  • MySQL按年/月/周/日/小時分組查詢、排序、limit及判空用法實例

    MySQL按年/月/周/日/小時分組查詢、排序、limit及判空用法實例

    我們在用Mysql抽取數(shù)據(jù)時候,經(jīng)常需要按照天、周、月等不同的粒度對數(shù)據(jù)進行分組統(tǒng)計,下面這篇文章主要給大家介紹了關(guān)于MySQL按年/月/周/日/小時分組查詢、排序、limit及判空用法的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 一文詳解MySQL主從同步原理

    一文詳解MySQL主從同步原理

    這篇文章主要介紹了一文詳解MySQL主從同步原理,MySQL主從同步是基于Bin?Log實現(xiàn)的,而Bin?Log記錄的是原始SQL語句,更多相關(guān)內(nèi)容介紹感興趣的小伙伴可以參考一下
    2022-08-08
  • window10下mysql 8.0.20 安裝配置方法圖文教程

    window10下mysql 8.0.20 安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了window10下mysql 8.0.20 安裝配置方法圖文教程,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05

最新評論