在資料庫操作過程,經常會遇到分配普通用戶權限問題,root權限是最高權限,本文講述了權限管理
授權命令
grant all on *.* to oldboy@'10.0.0.%' identified by '123' with grant option;grant 權限 on 作用目標 to 用戶 identified by 密碼 with grant option;grant select,insert,update,delete,create on wordpress.* to root@'localhost' identified by '123';
作用目標:
*.*wordpress.*wordpress.t1
授權需求
創建一個管理員用戶root,可以通過10網段,管理資料庫grant all on *.* to root@'10.0.0.%' identified by '123' with grant option;
創建一個應用用戶wordpress,可以通過10網段管理wordpress庫下的所有表進行select,insert,update,delete操作grant select ,insert,update,delete on wordpress.* to wordpress@'10.0.0.%' identified by '123'
回收權限
查找用戶權限
show grants for wordpress@'10.0.0.%';
回收delete權限
revoke delete on wordpress.* from wordpress@'10.0.0.%';
回收授權權限
revoke grant option on *.* from root@'10.0.0.%';
資料庫分層
連接層
提供連接協議用戶驗證提供連接線程SQL層
語法和SQL_MODE語義和權限解析優化器(代價)執行器查詢緩存日誌記錄二進位日誌存儲引擎層
從磁碟讀取數據頁返回給SQL層
資料庫結構
物理結構
資料庫----->目錄
表,對於MyISAM引擎和InnoDB有不同的結構
MyISAM結構
FRM存儲列信息MYD存儲數據MYI存儲索引InnoDB結構
FRM 存儲列信息IBD 存儲數據邏輯結構
資料庫包含庫名和庫屬性
數據表包含列和列屬性,數據行,表的屬性
頁:最小的存儲單元,默認16k區:64個連續的頁,共1M段:一個表就是一個段,包含一個或多個區MySQL基礎管理
日常啟停
mysql.server start ----> mysqld_safe ---->mysqldmysql.service ------> mysqld
需要依賴於 /etc/my.cnf
維護性任務
我們一般分將參數添加到命令行中,也會讀取/etc/my.cnf的內容,但是如果衝突,命令行優先級最高
mysqld_safe --skip-networking --skip-grant-tables &
關閉資料庫方法
mysqladmin -uroot -p123 shutdown
初始化配置
作用
影響資料庫的啟動影響到客戶端的功能初始化配置的方法
初始化配置文件(例如/etc/my.cnf)啟動命令行上進行設置(例如:mysqld_safe mysqld)預編譯時設置(僅限於編譯安裝時設置)初始化配置文件的書寫格式
[標籤]xxx=xxx[標籤]xxxx=xxxx
配置文件標籤的歸類
[server]和[client]屬於歸納類的標籤,配置後,會影響所有小類的配置,不建議使用
伺服器端
[mysqld] [mysqld_safe] [server]
客戶端
[mysql] [mysqladmin] [mysqldump] [client]
配置文件設置樣板(5.7)
#伺服器端配置[mysqld]#用戶user=mysql#軟體安裝目錄basedir=/application/mysql#數據路徑datadir=/data/mysql/data#socket文件位置socket=/tmp/mysql.sock#伺服器id號server_id=6#埠號port=3306#客戶端配置[mysql]#socket文件位置socket=/tmp/mysql.sock
配置文件讀取順序
資料庫服務端程序從左到右依次讀取文件,如果配置項發生衝突,以最新讀取的為主。一般情況下使用/etc/my.cnf,不建議使用其他的配置文件,容易混亂
[root@db01 ~]# mysqld --help --verbose | grep my.cnf | head -1/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
強制使用自定義配置文件
mysqld_safe --defaults-file=/etc/myself.cnf &
MySQL的連接管理
mysql命令
如果同時使用TCPIP和SOCKET方式連接數據,以為TCPIP連接為主
注意:提前應該將用戶授權做好
grant all on *.* to root@'10.0.0.%' identified by '123' with grant option;
TCPIP:
mysql -uroot -p -h 10.0.0.1 -P3306
SOCKET:
mysql -uroot -p -S /tmp/mysql.sock