Mysql基本用法(一)
本博文是屬於一個系列,主要是根據馬哥視訊總結而來,主要是為了本人日後回看之用,也供道友參考
MariaDB or Mysql:
DBMS
RDBMS:關係型資料庫管理系統
C/S,通過專有協議
關係模型:表(行,列),二維關係
正規化:第一正規化,第二正規化,第三正規化
關係運算:
選擇
投影
資料庫:表,索引,試圖(虛表)
SQL:Structure Query Language
DDL,DML
程式設計介面:
儲存過程
儲存函式
觸發器
事件排程器
程序式程式設計,選擇,迴圈
三層模型:
物理層 低層
邏輯層 中層
檢視層 高層
解決方案:
Oracle, Sybase, Infomix, DB2;
Mysql, MariaDB, PostgreSQL, SQLite
MySQL -->5.1 -->5.5 -->5.6 -->5.7
MariaDB
外掛式儲存引擎 show engines;
單程序多執行緒
連線執行緒
守護執行緒
配置檔案,集中式的配置,能夠為Mysql的各應用程式提供配置資訊
[mysqld]
[mysqld_safe]
[mysqld_multi]
[server]
[mysql]
[mysqldump]
[client]
parameter - value
跳過名稱資訊:
skip-name-resolve
skip_name_resolve
查詢路徑:/etc/my.cnf -->/etc/mysql/my.cnf -->$MYSQL_HOME/my.cnf --> --default-extra-file=/path/to/somedir/my.cnf --> ~/.my.cnf
越靠後的越是最終生效的
安裝方法:
os vendor: rpm
MySQL:
rpm
展開可用
原始碼
安裝後的設定:
(1)為所有root使用者設定密碼:
mysql> SET PASSWORD
mysql> UPDATE MYSQL.USER SET PASSWORD=PASSWORD('YOUR_PASS') WHERE CLUASE;
#mysqladmin
(2)刪除所有的匿名使用者
mysql> DROP USER ''@'LOCALHOST';
上述兩步驟可執行命令:mysql_secure_installation
(3)建議關閉主機名反解功能:
skip-name-resolve
元資料資料庫:mysql
user,host等;
(客戶端)mysql --> (服務端)mysqld
客戶端程式:
mysql:互動式的CLI工具 mysqldump:備份功能,基於mysql協議向Mysqld發起查詢請求,並將查得的資料轉換成insert等寫操作語句儲存文字檔案中(匯出)
mysqladmin:基於MySQL協議管理mysqld;
mysqlimport:資料匯入工具;
非客戶端類的管理工具:
myisamchk :檢查整理修復myisam表
myisampack :將myisam表打包查詢。
如何獲取程式預設使用的配置:
#mysql --print-defaults
#mysqld --print-defaults
客戶端類應用程式的可用選項:
-u, --user-
-h, --host-
-p, --password-
-P, --port-
--protocal-(tcp|sock) 通常是tcp
-S, --socket-
-D, --database-
-C, --compress
mysql -e -SQL- 執行完命令立即回來 例:mysql -e "show databases;"
mysql的使用模式:
互動模式
可執行命令有兩類
客戶端命令:
\h,help
伺服器端命令:
SQL,需要語句結束符;
指令碼模式
#mysql -uUSER -hHOST -pPASSWORD </path/from/somefile.sql
mysql> source /path/from/somefile.sql
前提:需要有執行許可權
服務端(mysqld):工作特性有多種定義方式
命令列選項
配置檔案引數
獲取可用引數列表:
mysqld --help --verbase 賊詳細,前提關閉mysql
獲取執行中的Mysql程序使用各伺服器引數及其值:
mysql> show global variables;
mysql> show session variables; 注意:其中有些引數支援執行時修改,會立即生效;有些引數不支援,且只能通過修改配置檔案,並重啟伺服器程式生效。
有些引數作用域是全域性的,且不可改變,有些可以為每個使用者提供單獨的設定;
修改伺服器變數的值:
mysql> help SET
全域性:
mysql> set global system_var_name=value;
mysql> set @@global.system_var_name=value;
會話:
mysql> set [session] system_var_name=value;
mysql> set @@[session.]system_var_name=value;
狀態變數:用於儲存mysqld執行中的統計資料的變數;
mysql> show global status;
mysql> show [session] status;