<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        MySQLStudy之--MySQL用戶及權限管理_MySQL

        來源:懂視網 責編:小采 時間:2020-11-09 19:52:58
        文檔

        MySQLStudy之--MySQL用戶及權限管理_MySQL

        MySQLStudy之--MySQL用戶及權限管理_MySQL:MySQL Study之--MySQL用戶及權限管理 MySQL服務器通過MySQL權限表來控制用戶對數據庫的訪問,MySQL權限表存放在mysql數據庫里,由mysql_install_db腳本初始化。這些MySQL權限表分別user,db,table_priv,columns_priv和host。下
        推薦度:
        導讀MySQLStudy之--MySQL用戶及權限管理_MySQL:MySQL Study之--MySQL用戶及權限管理 MySQL服務器通過MySQL權限表來控制用戶對數據庫的訪問,MySQL權限表存放在mysql數據庫里,由mysql_install_db腳本初始化。這些MySQL權限表分別user,db,table_priv,columns_priv和host。下

        MySQL Study之--MySQL用戶及權限管理
        MySQL服務器通過MySQL權限表來控制用戶對數據庫的訪問,MySQL權限表存放在mysql數據庫里,由mysql_install_db腳本初始化。這些MySQL權限表分別user,db,table_priv,columns_priv和host。下面分別介紹一下這些表的結構和內容:
        user權限表:記錄允許連接到服務器的用戶帳號信息,里面的權限是全局級的。
        db權限表:記錄各個帳號在各個數據庫上的操作權限。
        table_priv權限表:記錄數據表級的操作權限。
        columns_priv權限表:記錄數據列級的操作權限。
        host權限表:配合db權限表對給定主機上數據庫級操作權限作更細致的控制。這個權限表不受GRANT和REVOKE語句的影響。

        案例分析:
        一、創建用戶并授權(root用戶)
        [root@mysrv ~]# mysql -u root -poracle

        mysql> select version()\g
        +-------------------------------------------+
        | version() |
        +-------------------------------------------+
        | 5.6.25-enterprise-commercial-advanced-log |
        +-------------------------------------------+
        1 row in set (0.00 sec)
        mysql> show databases;
        +--------------------+
        | Database |
        +--------------------+
        | information_schema |
        | mysql |
        | performance_schema |
        | prod |
        | test |
        +--------------------+
        5 rows in set (0.01 sec)


        1、建立tom用戶并授權(特權管理用戶)

        mysql> grant all on prod.* to 'tom'@'%' identified by 'tom' with grant option;
        Query OK, 0 rows affected (0.00 sec)

        查看用戶創建是否成功:
        mysql> select user,host from user ;
        +-------+-----------+
        | user | host |
        +-------+-----------+
        | tom | % |
        | root | 127.0.0.1 |
        | root | ::1 |
        | | localhost |
        | root | localhost |
        | scott | localhost |
        | | mysrv |
        | root | mysrv |
        +-------+-----------+
        8 rows in set (0.00 sec)
        查看tom用戶的授權:
        mysql> show grants for tom;
        +----------------------------------------------------------------------------------------------------+
        | Grants for tom@% |
        +----------------------------------------------------------------------------------------------------+
        | GRANT USAGE ON *.* TO 'tom'@'%' IDENTIFIED BY PASSWORD '*71FF744436C7EA1B954F6276121DB5D2BF68FC07' |
        | GRANT ALL PRIVILEGES ON `prod`.* TO 'tom'@'%' WITH GRANT OPTION |
        +----------------------------------------------------------------------------------------------------+

        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" 兩部分,后者表示該用戶被允許從何地接入。tom@'%' 表示任何地址,默認可以省略。還可以是 "tom@192.168.1.%"、"tom@%.abc.com" 等。數據庫格式為 db@table,可以是 "test.*" 或 "*.*",前者表示 test 數據庫的所有表,后者表示所有數據庫的所有表。
        子句 "WITH GRANT OPTION" 表示該用戶可以為其他用戶分配權限。


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

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

        mysql> select user,host from user ;
        +-------+-----------+
        | user | host |
        +-------+-----------+
        | tom | % |
        | tom1 | % |
        | tom2 | % |
        | root | 127.0.0.1 |
        | root | ::1 |
        | | localhost |
        | root | localhost |
        | scott | localhost |
        | | mysrv |
        | root | mysrv |
        +-------+-----------+
        10 rows in set (0.00 sec)
        root用戶退出,tom登陸,并授權用戶訪問prod庫

        [root@mysrv ~]# mysql -u tom -ptom
        ERROR 1045 (28000): Access denied for user 'tom'@'localhost' (using password: YES)

        tom用戶竟不能登陸!!!

        再對tom用戶授權:
        mysql> grant all on prod.* to 'tom'@'localhost' identified by 'tom' with grant option;;
        Query OK, 0 rows affected (0.00 sec)

        mysql> show grants for tom;
        +----------------------------------------------------------------------------------------------------+
        | Grants for tom@% |
        +----------------------------------------------------------------------------------------------------+
        | GRANT USAGE ON *.* TO 'tom'@'%' IDENTIFIED BY PASSWORD '*71FF744436C7EA1B954F6276121DB5D2BF68FC07' |
        | GRANT ALL PRIVILEGES ON `prod`.* TO 'tom'@'%' WITH GRANT OPTION |
        +----------------------------------------------------------------------------------------------------+
        2 rows in set (0.00 sec)

        mysql> use mysql;
        Database changed
        mysql> select user,host from user ;
        +-------+-----------+
        | user | host |
        +-------+-----------+
        | tom | % |
        | tom1 | % |
        | tom2 | % |
        | root | 127.0.0.1 |
        | root | ::1 |
        | | localhost |
        | root | localhost |
        | scott | localhost |
        | tom | localhost |
        | | mysrv |
        | root | mysrv |
        +-------+-----------+
        11 rows in set (0.00 sec)
        tom登陸:
        [root@mysrv ~]# mysql -u tom -ptom prod
        mysql> select database();
        +------------+
        | database() |
        +------------+
        | prod |
        +------------+
        1 row in set (0.01 sec)

        mysql> select current_user();
        +----------------+
        | current_user() |
        +----------------+
        | tom@localhost |
        +----------------+
        1 row in set (0.00 sec)

        創建表:

        mysql> show tables;
        +----------------+
        | Tables_in_prod |
        +----------------+
        | t1 |
        +----------------+
        1 row in set (0.00 sec)

        mysql> create table t2 as select * from t1;
        Query OK, 3 rows affected (0.15 sec)
        Records: 3 Duplicates: 0 Warnings: 0

        查看表信息:

        mysql> desc t2;
        +-------+-------------+------+-----+---------+-------+
        | Field | Type | Null | Key | Default | Extra |
        +-------+-------------+------+-----+---------+-------+
        | id | int(11) | YES | | NULL | |
        | name | varchar(10) | YES | | NULL | |
        +-------+-------------+------+-----+---------+-------+
        2 rows in set (0.01 sec)

        mysql> show create table t2;
        +-------+---------------------------------------------------------------------------------------------------------------------------+
        | Table | Create Table |
        +-------+---------------------------------------------------------------------------------------------------------------------------+
        | t2 | CREATE TABLE `t2` (
        `id` int(11) DEFAULT NULL,
        `name` varchar(10) DEFAULT NULL
        ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
        +-------+---------------------------------------------------------------------------------------------------------------------------+
        1 row in set (0.01 sec)

        mysql> show create table t2\G;
        *************************** 1. row ***************************
        Table: t2
        Create Table: CREATE TABLE `t2` (
        `id` int(11) DEFAULT NULL,
        `name` varchar(10) DEFAULT NULL
        ) ENGINE=InnoDB DEFAULT CHARSET=latin1
        1 row in set (0.00 sec)

        mysql> select * from t2;
        +------+-------+
        | id | name |
        +------+-------+
        | 10 | tom |
        | 20 | jerry |
        | 30 | rose |
        +------+-------+
        3 rows in set (0.00 sec)

        3、tom用戶為tom1,tom2授權
        mysql> grant select on prod.* to tom1;
        Query OK, 0 rows affected (0.00 sec)

        mysql> grant select on prod.* to tom2;
        Query OK, 0 rows affected (0.02 sec)

        mysql> grant insert,update on prod.* to tom2;
        Query OK, 0 rows affected (0.00 sec)

        tom2登陸(從遠程登陸):

        C:\Users\Administrator>mysql -h 192.168.8.240 -utom2 -ptom2

        mysql> select database();
        +------------+
        | database() |
        +------------+
        | NULL |
        +------------+
        1 row in set (0.00 sec)

        mysql> use prod;
        Database changed
        mysql> select database();
        +------------+
        | database() |
        +------------+
        | prod |
        +------------+
        1 row in set (0.00 sec)

        mysql> select current_user();
        +----------------+
        | current_user() |
        +----------------+
        | tom2@% |
        +----------------+
        1 row in set (0.00 sec)

        mysql> show grants for tom2;
        +------------------------------------------------------------------+
        | Grants for tom2@% |
        +------------------------------------------------------------------+
        | GRANT USAGE ON *.* TO 'tom2'@'%' IDENTIFIED BY PASSWORD |
        | GRANT SELECT, INSERT, UPDATE ON `prod`.* TO 'tom2'@'%' |
        +------------------------------------------------------------------+
        2 rows in set (0.00 sec)

        mysql> show tables;
        +----------------+
        | Tables_in_prod |
        +----------------+
        | t1 |
        | t2 |
        +----------------+
        2 rows in set (0.00 sec)

        mysql> select * from t1;
        +------+-------+
        | id | name |
        +------+-------+
        | 10 | tom |
        | 20 | jerry |
        | 30 | rose |
        +------+-------+
        3 rows in set (0.00 sec)

        mysql> select * from t2;
        +------+-------+
        | id | name |
        +------+-------+
        | 10 | tom |
        | 20 | jerry |
        | 30 | rose |
        +------+-------+
        3 rows in set (0.00 sec)

        mysql> insert into t1 values (40,'john');
        Query OK, 1 row affected (0.00 sec)
        mysql> commit;
        Query OK, 0 rows affected (0.09 sec)

        mysql> select * from t1;
        +------+-------+
        | id | name |
        +------+-------+
        | 10 | tom |
        | 20 | jerry |
        | 30 | rose |
        | 40 | john |
        +------+-------+
        4 rows in set (0.00 sec)

        mysql> update t1 set name='ellen' where id=40;
        Query OK, 1 row affected (0.01 sec)
        Rows matched: 1 Changed: 1 Warnings: 0

        mysql> select * from t1;
        +------+-------+
        | id | name |
        +------+-------+
        | 10 | tom |
        | 20 | jerry |
        | 30 | rose |
        | 40 | ellen |
        +------+-------+
        4 rows in set (0.00 sec)

        mysql> delete from t1;
        ERROR 1142 (42000): DELETE command denied to user 'tom2'@'192.168.8.254' for tab
        le 't1'
        mysql> commit;
        Query OK, 0 rows affected (0.05 sec)

        mysql> select * from t1;
        +------+-------+
        | id | name |
        +------+-------+
        | 10 | tom |
        | 20 | jerry |
        | 30 | rose |
        | 40 | ellen |
        +------+-------+
        4 rows in set (0.00 sec)


        4、回收tom2的update權限:
        mysql> revoke update on prod.* from tom2;
        Query OK, 0 rows affected (0.00 sec)

        tom2再重新登陸:
        C:\Users\Administrator>mysql -h 192.168.8.240 -utom2 -ptom2

        mysql> use prod;
        Database changed
        mysql> update t1 set name='lily' where id=10;
        ERROR 1142 (42000): UPDATE command denied to user 'tom2'@'192.168.8.254' for tab
        le 't1'
        ---update失敗!

        二、修改用戶口令:

        1、root用戶修改普通用戶口令
        mysql> set password for tom1=password('oracle');
        Query OK, 0 rows affected (0.01 sec)

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

        tom1重新登陸:
        C:\Users\Administrator>mysql -h 192.168.8.240 -utom1 -ptom1
        Warning: Using a password on the command line interface can be insecure.
        ERROR 1045 (28000): Access denied for user 'tom1'@'192.168.8.254' (using passwor
        d: YES)
        ---舊口令登陸失敗!

        C:\Users\Administrator>mysql -h 192.168.8.240 -utom1 -poracle
        mysql>

        2、普通用戶修改自己密碼:
        C:\Users\Administrator>mysql -h 192.168.8.240 -utom1 -poracle
        mysql> set password=password('tom1');
        Query OK, 0 rows affected (0.00 sec)

        重新登陸:
        C:\Users\Administrator>mysql -h 192.168.8.240 -utom1 -ptom1
        mysql>
        ---新密碼登陸成功 !

        三、刪除用戶:
        1、回收用戶所有權限
        mysql> revoke all on prod.* from tom2;
        Query OK, 0 rows affected (0.01 sec)

        2、刪除用戶
        mysql> drop user tom2;
        Query OK, 0 rows affected (0.00 sec)

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

        mysql> select user,host from user;
        +-------+-----------+
        | user | host |
        +-------+-----------+
        | jerry | % |
        | rose | % |
        | tom | % |
        | tom1 | % |
        | root | 127.0.0.1 |
        | root | ::1 |
        | | localhost |
        | jerry | localhost |
        | root | localhost |
        | rose | localhost |
        | scott | localhost |
        | tom | localhost |
        | | mysrv |
        | root | mysrv |
        +-------+-----------+
        14 rows in set (0.00 sec)
        ------- 摘要 --------------------------------------

        創建用戶:
        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;

        grant和revoke可以在幾個層次上控制訪問權限
        1,整個服務器,使用 grant ALL 和revoke ALL
        2,整個數據庫,使用on database.*
        3,特點表,使用on database.table
        4,特定的列
        5,特定的存儲過程

        user表中host列的值的意義
        % 匹配所有主機
        localhost localhost不會被解析成IP地址,直接通過UNIXsocket連接
        127.0.0.1 會通過TCP/IP協議連接,并且只能在本機訪問;
        ::1 ::1就是兼容支持ipv6的,表示同ipv4的127.0.0.1

        grant 普通數據用戶,查詢、插入、更新、刪除 數據庫中所有表數據的權利。
        grant select on testdb.* to common_user@’%’
        grant insert on testdb.* to common_user@’%’
        grant update on testdb.* to common_user@’%’
        grant delete on testdb.* to common_user@’%’
        或者,用一條 MySQL 命令來替代:
        grant select, insert, update, delete on testdb.* to common_user@’%’
        grant 數據庫開發人員,創建表、索引、視圖、存儲過程、函數。。等權限。
        grant 創建、修改、刪除 MySQL 數據表結構權限。
        grant create on testdb.* to developer@’192.168.0.%’;
        grant alter on testdb.* to developer@’192.168.0.%’;
        grant drop on testdb.* to developer@’192.168.0.%’;
        grant 操作 MySQL 外鍵權限。
        grant references on testdb.* to developer@’192.168.0.%’;
        grant 操作 MySQL 臨時表權限。
        grant create temporary tables on testdb.* to developer@’192.168.0.%’;
        grant 操作 MySQL 索引權限。
        grant index on testdb.* to developer@’192.168.0.%’;
        grant 操作 MySQL 視圖、查看視圖源代碼 權限。
        grant create view on testdb.* to developer@’192.168.0.%’;
        grant show view on testdb.* to developer@’192.168.0.%’;
        grant 操作 MySQL 存儲過程、函數 權限。
        grant create routine on testdb.* to developer@’192.168.0.%’; -- now, can show procedure status
        grant alter routine on testdb.* to developer@’192.168.0.%’; -- now, you can drop a procedure
        grant execute on testdb.* to developer@’192.168.0.%’;
        grant 普通 DBA 管理某個 MySQL 數據庫的權限。
        grant all privileges on testdb to dba@’localhost’
        其中,關鍵字 “privileges” 可以省略。
        grant 高級 DBA 管理 MySQL 中所有數據庫的權限。
        grant all on *.* to dba@’localhost’

        MySQL grant 權限,分別可以作用在多個層次上。
        1. grant 作用在整個 MySQL 服務器上:
        grant select on *.* to dba@localhost; -- dba 可以查詢 MySQL 中所有數據庫中的表。
        grant all on *.* to dba@localhost; -- dba 可以管理 MySQL 中的所有數據庫
        2. grant 作用在單個數據庫上:
        grant select on testdb.* to dba@localhost; -- dba 可以查詢 testdb 中的表。
        3. grant 作用在單個數據表上:
        grant select, insert, update, delete on testdb.orders to dba@localhost;
        4. grant 作用在表中的列上:
        grant select(id, se, rank) on testdb.apache_log to dba@localhost;
        5. grant 作用在存儲過程、函數上:
        grant execute on procedure testdb.pr_add to ’dba’@’localhost’
        grant execute on function testdb.fn_add to ’dba’@’localhost’

        注意:修改完權限以后 一定要刷新服務,或者重啟服務,刷新服務用:FLUSH PRIVILEGES。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MySQLStudy之--MySQL用戶及權限管理_MySQL

        MySQLStudy之--MySQL用戶及權限管理_MySQL:MySQL Study之--MySQL用戶及權限管理 MySQL服務器通過MySQL權限表來控制用戶對數據庫的訪問,MySQL權限表存放在mysql數據庫里,由mysql_install_db腳本初始化。這些MySQL權限表分別user,db,table_priv,columns_priv和host。下
        推薦度:
        標簽: 用戶 權限 管理
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 2020因为爱你带字幕免费观看全集 | 亚洲国产高清国产拍精品| 无码人妻一区二区三区免费看| 日韩精品无码一区二区三区免费| av在线亚洲欧洲日产一区二区| 亚洲午夜精品国产电影在线观看| 免费一区二区三区| 亚洲国产精品成人精品无码区 | 国产乱子伦片免费观看中字| 亚洲啪AV永久无码精品放毛片| 好爽…又高潮了免费毛片| 亚洲乱妇老熟女爽到高潮的片| 免费无遮挡无码视频网站| 亚洲乱码av中文一区二区| 少妇亚洲免费精品| 亚洲国产成人手机在线电影bd | 亚洲国产成人a精品不卡在线| 黄色毛片免费网站| 永久免费的网站在线观看| 亚洲日韩aⅴ在线视频| 亚洲精品理论电影在线观看| 免费看美女让人桶尿口| 污视频网站免费在线观看| 人禽杂交18禁网站免费| 亚洲av无码专区在线观看下载| 日本妇人成熟免费中文字幕| 亚洲国产理论片在线播放| 免费无码黄网站在线观看| 亚洲免费日韩无码系列| 亚洲欧洲免费视频| a级毛片在线免费| 亚洲精品成人在线| 华人在线精品免费观看| 亚洲91精品麻豆国产系列在线| 18观看免费永久视频| 亚洲人成电影网站色| 国产亚洲大尺度无码无码专线 | 四虎影视在线永久免费看黄| 免费看黄的成人APP| 亚洲砖码砖专无区2023| 国产桃色在线成免费视频|