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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...