Mysql許可權操作、用戶管理、密碼操作

来源:http://www.cnblogs.com/sdadx/archive/2017/11/24/7890277.html
-Advertisement-
Play Games

Mysql的許可權 mysql中存在4個控制許可權的表,分別為user表,db表,tables_priv表,columns_priv表。 mysql許可權表的驗證過程為: 先從user表中的Host,User,Password這3個欄位中判斷連接的ip、用戶名、密碼是否存在,存在則通過驗證。 通過身份認證 ...


Mysql的許可權

  mysql中存在4個控制許可權的表,分別為user表,db表,tables_priv表,columns_priv表。

       mysql許可權表的驗證過程為:

  • 先從user表中的Host,User,Password這3個欄位中判斷連接的ip、用戶名、密碼是否存在,存在則通過驗證。
  • 通過身份認證後,進行許可權分配,按照user,db,tables_priv,columns_priv的順序進行驗證。

   即先檢查全局許可權表user,如果user中對應的許可權為Y,則此用戶對所有資料庫的許可權都為Y,將不再檢查db, tables_priv,columns_priv;

   如果為N,則到db表中檢查此用戶對應的具體資料庫,並得到db中為Y的許可權;

   如果db中為N,則檢查tables_priv中此資料庫對應的具體表,取得表中的許可權Y,以此類推。

  

1.查詢資料庫的用戶名,主機,密碼

mysql>select user,host,password from mysql.user;

 

2.顯示某個用戶的授權命令

mysql>show grants for rep@'%';

 

3.賦予某個用戶對庫test進行select,insert,update,delete的許可權的命令如下

mysql>grant select,insert,update,delete on test.* to user01@'10.200.20.%' identified by '123';

 4.賦予備份整個實例許可權的命令


mysql>grant lock tables,reload,super,select,show view,trigger,process on *.* to backup@'localhost' identified by '123';

5.賦予遠程備份各個庫許可權的命令

mysql>grant lock tables,select,show view,trigger,process  on *.* to backup@'10.200.20.18'   identified by '123';

主從複製時,需要replication slave許可權,

查看複製的狀態,需要replication client許可權。

 

6.給用戶superuser賦予所有許可權,並允許superuser用戶也能將這些許可權賦予其他用戶

mysql>grant all privileges on *.* to 'superuser'@'%' identified by '123'  with grant option;

 

 

7.回收許可權(不包括賦權許可權)

mysql> revoke all privileges on *.* from superuser; #superuser在修改後的下一次請求時,新許可權才生效

 

8.回收賦權許可權 

mysql>revoke grant option on *.* from superuser ;

 

 9.刪除mysql用戶

mysql>drop user 'zhang'@'%';
或
mysql>delete from mysql.user where user='zhang' and host='%';
mysql>flush privileges;

 

Mysql的密碼

9.修改用戶密碼(使用mysqladmin命令修改)

#mysqladmin -u root password 123456  #在root沒有密碼的情況下
#mysqladmin -u root -p123456 password abcdef  #root有密碼,(-p和密碼要連在一起)
#mysqladmin -u superuser -p123456 -h172.23.216.86  password abcdef  #superuser的host為%,不是localhost

 

10.修改用戶密碼(使用set password命令修改)

mysql>set password for user01@'10.200.20.%'=password('123456');

11.修改用戶密碼(使用grant命令重新賦予用戶連接密碼)

mysql>grant usage on test.* to user01@'10.200.20.%' identified by '123456';

12.修改用戶密碼(使用命令直接修改系統表)

mysql>update mysql.user set password=password('12345678') where user='user01' and host='10.200.20.%'
mysql>flush privileges;

授權小結:1.當mysqld啟動時,所有的授權表被讀到記憶體,並開始生效。當伺服器註意到授權表被改變時,現存的客戶端連接會收到如下影響。

    •  表和列的許可權在客戶端的下一次請求時生效。
    •  資料庫的許可權改變在下一個 USE db_name 命令時生效。
    •    全局許可權的改變和密碼的改變在下一次客戶端連接時生效。

       2.grant,revoke或set password 命令對授權表進行修改,伺服器會自動將授權表重新載入到記憶體。

      如果手動修改授權表(insert,update,delete),需要手動flush privileges。

       3.mysql的主機通配符‘%’不包括‘localhost’,‘localhost’和ip‘127.0.0.1’並不等同,如果使用“mysql -uroot -h localhost”,則預設會連接socket文件,

      如果使用“mysql -uroot -h 127.0.01”,則會連接 TCP埠。

---------------------------------------------------------------------------補充-------------------------------------------------------------------------

 

 一、創建用戶時用grant和create user的區別

  mysql創建用戶也有三種方法,上面只介紹到了grant,但是還可以用insert user表,create user的方法。

create user 'zhangsan'@'10.200.20.%' identified by '123456';

用戶與@後主機分開 創建出來的用戶:

 

mysql>create user 'zhang@%' identified by '123456';

用戶與@後主機一致創建出來的用戶:     (證明這種方法不可行,網上有的說用這種方法)

 

為了確認用create user創建的許可權,那麼我們來show grant一下。

mysql>show grants for 'zhang'@'%';

usage表示只能連接登錄,並沒有實際其他許可權。

所有說create user這種方式創建出來的用戶,只能連接一下資料庫,還需繼續用grant給用戶進行授權。

 

二、mysql的root密碼忘記,找回

  1.先把mysql服務停掉

#service mysqld stop    

 2.用mysqld_safe加參數--skip-grant-tables 啟動,表示跳過授權表啟動msyql

#mysqld_safe --skip-grant-tables &

 

 

 3.登錄mysql,這時候賬號密碼為空都可以登錄

#mysql -uroot

  4.修改root用戶密碼,退出。

mysql> update mysql.user set password=password('today123') where user='root';
mysql> flush privileges;      #其實這一步執行完之後,許可權表已經載入到內從中,quit之後,再登錄就已經需要密碼了。
                    #為了嚴禁,還是要關閉mysql,再啟動
mysql> quit;

 

   5.退出mysql,重啟mysql,再用新密碼登錄

# mysqladmin -uroot -ptoday123 shutdown       #這種關閉的方法比較安全,
#ps -ef|grep mysqld                #檢查mysql進程,實在殺不掉的話,用killall mysqld
#service mysqld start               #將mysql啟動
#mysql -uroot -ptoday123             #用新密碼登錄

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 建立dumall資料庫,創建goods集合,導入數據文件,也可以自己手動插入。 mongodb安裝與環境搭建: http://www.cnblogs.com/ccyinghua/p/7887713.html 建立資料庫和插入數據,可以是進入mongo操作資料庫,以命令行形式插入操作,即成功啟動Mon ...
  • 1.資料庫表操作: - 首先啟動mysql伺服器,在安裝mysql的目錄下打開cmd視窗,運行mysql:'mysql.exe -hlocalhost -p3306 -uroot -p123456'; - 查看所有的資料庫: show databases; -- create database my ...
  • 同義詞: 對另一個數據對象而言同義詞是一個別名,同義詞對其目標對象進行依賴,如果目標對象被更改或刪除,則該同義詞將變為無效。 同義詞不能代替資料庫對象的特權,即先用對模式的對象有查詢、執行、刪除等許可權。 許可權: 要在自己的模式中創建私有同義詞,您必須具有CREATE SYNONYM系統特權。 要在另 ...
  • 這個系列大致想跟大家分享以下篇章(我會持續更新的↖(^ω^)↗): 1、mongo 3.4分片集群系列之一:淺談分片集群 2、mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3、mongo 3.4分片集群系列之三:搭建分片集群--哈希分片 + 安全 4、mongo 3.4分片集群系列之 ...
  • 什麼是資料庫系統? 資料庫系統=資料庫(DataBase(DB))+資料庫管理系統(Database Management System (DBMS))+資料庫應用程式(Database Application (DBA)) 資料庫:為了滿足一個機構的信息需求而設計的邏輯上相關的可共用的數據及數據描 ...
  • 最近有個需求,需要整合所有店鋪的數據做一個離線式分析系統,曾經都是按照店鋪分庫分表來給各自商家通過highchart多維度展示自家的店鋪經營 狀況,我們知道這是一個以店鋪為維度的切分,非常適合目前的線上業務,這回老闆提需求了,曾經也是一位數據分析師,sql自然就溜溜的,所以就來了 一個以買家維度展示 ...
  • 給大家介紹一下虛擬機和Xshell5連接的基本配置1.安裝虛擬機,跟著提示一步一步安裝即可,註意添加鏡像文件,虛擬機就完成了.2.下載一個Xshell5,安裝好之後.要修改虛擬機的網卡狀態 1).編輯ifcfg-eth0, 2).點一下i,出現--inner--,修改ONBOOT=YES,Esc退出 ...
  • 1.創建mysql用戶,mysql組. # useradd -s /bin/nologin -M mysql 查看是否創建成功. # id mysql 2.講mysql的二進位包解壓到/usr/local/目錄下. # cd /usr/local/ # tar -zxvf mysql-5.7.20- ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...