5. 建立使用者、授權以及修改密碼等許可權操作
今天突然有了修改密碼的需求,然後試著在網上搜了下方法,好像都不能成功,後來看了下官方文件才發現,是因為我用的mysql版本太高了,已經改變了修改密碼的方法。
檢視mysql版本
如果還沒連線到mysql伺服器,那麼採用以下三種方法:
-- 方法一
C:\Users\root>mysql -V
mysql Ver 14.14 Distrib 5.7.20, for Win64 (x86_64)
-- 方法二
C:\Users\root>mysql --help | find "Distrib"
mysql Ver 14.14 Distrib 5.7.20, for Win64 (x86_64)
-- 方法三,可以看到登入的時候會顯示mysql版本資訊
C:\Users\root>mysql -uroot -p
Enter password: *******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 20
Server version: 5.7.20-log 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資料庫,採用以下三種方法:
-- 第一種方法
mysql> select version();
+------------+
| version() |
+------------+
| 5.7.20-log |
+------------+
1 row in set (0.00 sec)
-- 第二種方法
mysql> status
--------------
mysql Ver 14.14 Distrib 5.7.20, for Win64 (x86_64)
Connection id: 21
Current database:
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 5.7.20-log MySQL Community Server (GPL)
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: utf8
Db characterset: utf8
Client characterset: gbk
Conn. characterset: gbk
TCP port: 3306
Uptime: 6 days 46 min 10 sec
Threads: 1 Questions: 158 Slow queries: 0 Opens: 135 Flush tables: 1 Open tables: 125 Queries per second avg: 0.000
--------------
-- 第三種方法
mysql> \s
--------------
mysql Ver 14.14 Distrib 5.7.20, for Win64 (x86_64)
Connection id: 21
Current database:
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 5.7.20-log MySQL Community Server (GPL)
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: utf8
Db characterset: utf8
Client characterset: gbk
Conn. characterset: gbk
TCP port: 3306
Uptime: 6 days 48 min 28 sec
Threads: 1 Questions: 161 Slow queries: 0 Opens: 135 Flush tables: 1 Open tables: 125 Queries per second avg: 0.000
--------------
總結
因此,由以上檢視版本的方法,可以知道,我用的mysql版本為5.7.20-log MySQL Community Server (GPL)
,已經不支援以前修改密碼的方式了。
檢視系統配置
-- 資料庫系統配置儲存在mysql資料庫中,切換到mysql資料庫
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| menageries |
| mysql |
| performance_schema |
| sakila |
| sys |
| test |
| world |
+--------------------+
8 rows in set (0.00 sec)
mysql> use mysql
Database changed
-- 可以看出,使用者配置資訊儲存在user表中
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| engine_cost |
| event |
| func |
| general_log |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
31 rows in set (0.27 sec)
-- 檢視錶格屬性有哪些,由於表格太長,此處不一一列出,分析知道其中有一行名為authentication_string,這就是我們找的屬性
mysql> describe user;
……
authentication_string | text
……
-- 果然這裡面儲存的是使用者密碼,但是並非明文顯示
mysql> select user,authentication_string from user;
+---------------+-------------------------------------------+
| user | authentication_string |
+---------------+-------------------------------------------+
| root | *FAAFFE644E901CFAFAEC7562415E5FAEC243B8B2 |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| test | *676243218923905CF94CB52A3C9D3EB30CE8E20D |
+---------------+-------------------------------------------+
4 rows in set (0.00 sec)
建立使用者
mysql> create user '2b'@'localhost' identified by '2b';
Query OK, 0 rows affected (1.06 sec)
mysql> select user,authentication_string from user;
+---------------+-------------------------------------------+
| user | authentication_string |
+---------------+-------------------------------------------+
| root | *FAAFFE644E901CFAFAEC7562415E5FAEC243B8B2 |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| test | *676243218923905CF94CB52A3C9D3EB30CE8E20D |
| 2b | *3382AC02521A1462D80B82F33C8F09029CD69A42 |
+---------------+-------------------------------------------+
5 rows in set (0.00 sec)
可以看到,我們成功的建立了一個使用者2b,我們給他設定了密碼2b,但是是加密顯示的。
刪除使用者
mysql> delete from user where user='2b';
Query OK, 1 row affected (0.45 sec)
mysql> select user,authentication_string from user;
+---------------+-------------------------------------------+
| user | authentication_string |
+---------------+-------------------------------------------+
| root | *FAAFFE644E901CFAFAEC7562415E5FAEC243B8B2 |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| test | *676243218923905CF94CB52A3C9D3EB30CE8E20D |
+---------------+-------------------------------------------+
4 rows in set (0.00 sec)
執行刪除命令的時候,千萬要再三確認再回車,不然誤刪了就麻煩了。
授權
mysql> grant all on test.* to 'test'@'localhost';
Query OK, 0 rows affected (0.05 sec)
命令:grant privileges on databasename.tablename to ‘username’@’host’
privileges為使用者操作許可權,如select、insert等,如果要授予所有的許可權,則用all;
databasename為資料庫名,table那麼為相對應的資料庫中的列表,如果授予全部列表,則用星號表示。
檢視使用者授權
使用show grants for user@host
命令檢視
mysql> show grants for test@localhost;
+--------------------------------------------------------+
| Grants for test@localhost |
+--------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test'@'localhost' |
| GRANT ALL PRIVILEGES ON `test`.* TO 'test'@'localhost' |
+--------------------------------------------------------+
2 rows in set (0.00 sec)
撤銷使用者許可權
使用REVOKE
命令來收回分配出去的許可權。
mysql> revoke all on test.* from 'test'@'localhost';
Query OK, 0 rows affected (0.00 sec)
flush privileges
建立了使用者,刪除了使用者,進行了授權以後,儘量進行flush privileges;
操作,否則可能相應的操作並不能立即生效。
更改使用者密碼
我又實驗了一下,用之前的版本的修改方法修改密碼:
-- 看起來好像不成功
mysql> set password for '2b'@'localhost'=password('123');
Query OK, 0 rows affected, 1 warning (0.03 sec)
當我執行完上面命令以後,提示我有一個警示,沒有資料受到影響。但是當我用123這個密碼登陸2b使用者的時候,竟然登上去了!!!這騙得我太辛苦了……^;^
然後我又換了一種方法,用新加的authentication_string屬性去修改密碼,居然也成功了!
mysql> update mysql.user set authentication_string=password('123') where user='2b';
Query OK, 1 row affected, 1 warning (0.08 sec)
Rows matched: 1 Changed: 1 Warnings: 1
-- 下面這一行必須要執行,否則不能立即生效
mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)
但是從這第二種方法明顯可以看出,修改成功了,因為它顯示一行受到影響。
相關文章
- Oracle 建立表空間、建立使用者以及授權、檢視許可權Oracle
- Oracle建立表空間、建立使用者、授權、授權物件的訪問以及檢視許可權集合Oracle物件
- MySql增加使用者、授權、修改密碼等語句MySql密碼
- MySQL建立使用者,配置許可權、密碼策略MySql密碼
- MySQL使用GRANT授權某使用者瀏覽和修改表許可權操作一例MySql
- MongoDB建立只讀使用者並授權指定集合的查詢許可權MongoDB
- django開發之許可權管理(一)——許可權管理詳解(許可權管理原理以及方案)、不使用許可權框架的原始授權方式詳解Django框架
- DB2許可權與授權DB2
- MySQL新建使用者,授權,刪除使用者,修改密碼MySql密碼
- mysql操作命令梳理(4)-grant授權和revoke回收許可權MySql
- MySQL 語句大全:建立、授權、查詢、修改等MySql
- 許可權修改命令
- Oracle建立表空間、建立使用者以及授權Oracle
- 授權物件許可權後的授權者顯示問題物件
- mysql使用者建立、修改、刪除及授權操作的總結MySql
- 授權許可權服務設計解析
- Oracle建立使用者並給使用者授權查詢指定表或檢視的許可權Oracle
- MYSQL學習筆記13: DCL許可權控制(使用者許可權操作)MySql筆記
- 鴻蒙Next許可權申請全攻略:系統授權與使用者授權之道鴻蒙
- 1.7.6. 授權和撤銷管理許可權
- 為什麼許可權授權很難?- osohq
- 許可權管理之多租戶隔離授權
- 認證/授權與許可權的問題
- Oracle 使用者、物件許可權、系統許可權Oracle物件
- mysql 8.0.21使用者及許可權操作MySql
- 批量修改資料夾及檔案使用者許可權和使用者組許可權 centosCentOS
- redis密碼設定、訪問許可權控制等安全設定Redis密碼訪問許可權
- Think Authz:支援 ACL、RBAC、ABAC 等模型的授權(角色和許可權控制)庫模型
- [WCF許可權控制]基於Windows使用者組的授權方式[上篇]Windows
- 【許可權管理】Oracle中檢視、回收使用者許可權Oracle
- 修改檔案的許可權
- 使用者許可權繼承另一使用者的許可權繼承
- MongoDB使用者許可權管理,設定密碼並連線MongoDB密碼
- Oracle 9i資料庫的使用者建立以及許可權分配Oracle資料庫
- 新建資料庫使用者,授權以及設定密碼有效期資料庫密碼
- Oracle的物件許可權、角色許可權、系統許可權Oracle物件
- mysql使用者建立與授權MySql
- MySQL建立使用者和授權MySql