1. 程式人生 > >資料庫MariaDB及MySQL

資料庫MariaDB及MySQL

1、MariaDB

(1)MariaDB的特性:
1)外掛式儲存引擎:儲存管理器有多種實現版本,彼此間的功能和特性可能略有區別;使用者可根據需要靈活選擇,儲存引擎也稱為“表型別”。
MyISAM:不支援事務;
InnoDB --> XtraDB :支援事務;
2)諸多擴充套件和新特性;
3)提供了較多的測試元件;
(2)安裝和使用MariaDB
安裝方式:
1)rpm包:
(a) 由OS的發行商提供;
(b) 程式官方提供;
2)原始碼包;
3)通用二進位制格式的程式包;

通用二進位制格式安裝MariaDB:
1)準備資料目錄:以/mydata/data目錄為例;
2)安裝配置mariadb
# useradd -r mysql


# tar xf mariadb-VERSION.tar.xz -C /usr/local
# cd /usr/local
# ln -sv mariadb-VERSION mysql
# cd /usr/local/mysql
# chown -R root:mysql ./*
# scripts/mysql_install_db --user=mysql -datadir=/mydata/data
# cp support-files/mysql.server /etc/init.d/mysqld
# chkconfig --add mysqld
3)提供配置檔案
ini格式的配置檔案,各程式均可通過此配置檔案獲取配置資訊:[program_name]
OS Vendor提供mariadb rpm包安裝的服務的配置檔案查詢次序:
/etc/mysql/my.cnf --> /etc/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf
通用二進位制格式安裝的服務程式其配置檔案查詢次序:
/etc/my.cnf --> /etc/mysql/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf
獲取其讀取次序的方法:mysqld --verbose --help

# cp support-files/my-large.cnf /etc/my.cnf
新增三個選項:

datadir = /mydata/data
innodb_file_per_table = ON
skip_name_resolve = ON

4)啟動服務
# service mysqld start
(3)MariaDB程式的組成
C:Client
mysql:CLI互動式客戶端程式;
mysqldump:備份工具;
mysqladmin:管理工具;
mysqlbinlog:二進位制日誌檔案生成工具;
S:Server
mysqld
mysqld_safe:建議執行服務端程式;
mysqld_multi:多例項;
三類套接字地址:
IPv4, 3306/tcp
Unix Sock:/var/lib/mysql/mysql.sock, /tmp/mysql.sock
C <–> S: localhost, 127.0.0.1

2、MySQL

mysql [OPTIONS] [database]
常用選項:
-uUSERNAME:使用者名稱,預設為root;
-hHOST:遠端主機(即mysql伺服器)地址,預設為localhost;
-p[PASSWORD]:USERNAME所表示的使用者的密碼; 預設為空;
注意:mysql的使用者賬號由兩部分組成:‘USERNAME’@‘HOST’,其中HOST用於限制此使用者可通過哪些遠端主機連線當前的mysql服務;
HOST的表示方式,支援使用萬用字元:
%:匹配任意長度的任意字元:172.16.%.%,172.16.0.0/16;
_ :匹配任意單個字元;
-Ddb_name:連線到伺服器端之後,設定其指明的資料庫為預設資料庫;
-e ‘SQL COMMAND;’:連線至伺服器並讓其執行此命令後直接返回;
(1)命令
客戶端命令:本地執行;
mysql> help
\u db_name:設定哪個庫為預設資料庫;
\q:退出;
\d CHAR:設定新的語句結束符;
\g:語句結束標記;
\G:語句結束標記,結果豎排方式顯式;
服務端命令:通過mysql連線發往伺服器執行並取回結果;
注意:每個語句必須有語句結束符,預設為分號( ; )。
(2)使用者賬號及許可權管理
使用者賬號:‘username’@‘host’
\host:此使用者訪問當前mysql伺服器時,允許其通過哪些主機遠端建立連線;
表示方式:IP,網路地址、主機名、萬用字元(%和_);
禁止檢查主機名:my.cnf

[mysqld]
skip_name_resolve = ON

建立使用者賬號:CREATE USER 'username'@'host' [IDENTIFIED BY 'password'];
刪除使用者賬號:DROP USER ’user‘@’host' [, [email protected]] ...
授權:許可權級別有管理許可權、資料庫、表、欄位、儲存例程;
GRANT priv_type,... ON [object_type] db_name.tbl_name TO 'user'@'host' [IDENTIFIED BY 'password'];
priv_type: ALL [PRIVILEGES];
db_name.tbl_name:
 * . * :所有庫的所有表;
db_name.*:指定庫的所有表;
db_name.tbl_name:指定庫的特定表;
db_name.routine_name:指定庫上的儲存過程或儲存函式;
檢視指定使用者所獲得的授權:
SHOW GRANTS FOR 'user'@'host'
SHOW GRANTS FOR CURRENT_USER;
回收許可權:REVOKE priv_type, ... ON db_name.tbl_name FROM 'user'@'host';
注意:
(a) MariaDB服務程序啟動時,會讀取mysql庫的所有授權表至記憶體中;
(b) GRANT或REVOKE命令等執行的許可權操作會保存於表中,MariaDB此時一般會自動重讀授權表,許可權修改會立即生效;
© 其它方式實現的許可權修改,要想生效,必須手動執行FLUSH PRIVILEGES命令方可;
加固mysql伺服器,在安裝完成後,執行mysql_secure_installation命令;
(3)MySQL的圖形管理元件
phpMyAdmin(運行於LAMP)、Navicat、Mysql-Front、ToadForMySQL、SQLyog等。