1979年,報表工具Unireg出現。
1985 年,以瑞典David Axmark 爲首,成立了一家公司(AB前身),IASM引擎出現。
1990年,提供SQL支持。
1999-2000年,MySQL AB公司成立,並公佈源碼,開源化。
2000年4月BDB引擎出現,支持事務。
2008年1月16號 MySQL被Sun公司收購。
2009年04月20日Oracle收購Sun公司,MySQL 轉入Oracle 門下。mysql
如今,愈來愈多的公司開始使用MySQL:linux
開源
社區版免費
簡單,使用方便,可靠
穩定、安全
社區活躍面試
1) 3.26--5.2版本
正宗後代
Centos五、6中默認有5.1版本
Centos7中默認是MariaDB
5.4--5.7 ,8.0版本
借鑑社區好的貢獻,進一步開發的版本
主流版本:5.5 5.6 5.7
講課版本5.6最新版sql
2) MySQL Cluster 6.0 版本&更高
相似於Oracle RAC,硬件要求高。
通常各大網站沒有人用數據庫
3) 版本選擇centos
5.6:選擇GA版(General Availability),GA版發佈6個月-1年以上的版本,最好是個雙數版本好比:5.6.36 、5.6.38 、5.6.34安全
5.7:5.7.17之後的GA版,且發行6個月以上好比:5.7.18 、5.7.20app
4) 面試時可能會問到的關於MySQL版本的問題
問:你公司用mysql嗎
答:yes
問:公司用什麼版本
答:5.6.36
問:爲何要用這個版本?
答:行業裏面有一個規範,選擇主流的5.6 5.7 GA 6個月以上的版本。咱們公司選擇這個版本是基於公司業務特色來決定的。另外由於開發階段用的版本也是5.6的。爲了保持版本一致。運維
1) RPM、Yum:安裝方便、安裝速度快,沒法定製
2) 二進制:不須要安裝,解壓便可使用,不能定製功能
3) 編譯安裝:可定製,安裝慢。
5.5以前:./configure make make install
5.5以後:cmake gmake
4) 先編譯,而後製做rpm,製做yum庫,而後yum安裝。
簡單、速度快、可定製,比較複雜 製做時間長
5) 企業選擇安裝方式
中小企業:以上方式均可以,運維偏向編譯,dba偏向選擇二進制。
大型企業:能夠選擇4工具
1) 克隆一個模板機器(使用centos6),克隆完作快照
2) IP 10.0.0.52 主機名db02
3) iptables selinux
4) 下載好5.6.36
5) 安裝依賴包
yum install -y ncurses-devel libaio-devel
6) 安裝cmake
yum install cmake –y
7) 建立用戶
useradd -s /sbin/nologin -M mysql id mysql
1) 上傳或下載壓縮包並解壓縮
mkdir /server/tools cd /server/tools ls -l mysql-5.6.36.tar.gz tar xf mysql-5.6.36.tar.gz cd mysql-5.6.36
我在實際操做中,發現還有兩個目錄須要建立:/application/mysql-5.6.36 和 /application/mysql-5.6.36/tmp/
2) 進行配置
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.36 \ -DMYSQL_DATADIR=/application/mysql-5.6.36/data \ -DMYSQL_UNIX_ADDR=/application/mysql-5.6.36/tmp/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS=all \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \ -DWITH_ZLIB=bundled \ -DWITH_SSL=bundled \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_EMBEDDED_SERVER=1 \ -DENABLE_DOWNLOADS=1 \ -DWITH_DEBUG=0
PS1:重要配置項解釋
配置預設置的數據庫必要參數
-DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.36 ---安裝路徑
-DMYSQL_DATADIR=/application/mysql-5.6.36/data ---數據庫存放數據
-DMYSQL_UNIX_ADDR=/application/mysql-5.6.36/tmp/mysql.sock ---數據庫套接字文件位置
PS2:硬編碼程序,將以上配置直接加入到mysql程序中
mysqld_safe
mysqld
mysql
mysqldump
mysqladmin
PS3:源碼包安裝方式和cmake有所不一樣:
源碼包方式安裝前的預配置
./configure --prefix --with --enable --disable (cmake)
做用:告訴後續make(編譯)的時候都要開啓或者關閉軟件的哪些功能
3) 編譯
make && make install
make:將c的源代碼編譯成計算機可以識別的格式(二進制)。
make install:將編譯好的程序文件拷貝到指定安裝目錄,修改權限。
4) 建立軟連接
ln -s /application/mysql-5.6.36/ /application/mysql
5) 複製配置文件
cp support-files/my*.cnf /etc/my.cnf
6) 初始化數據庫
/application/mysql/scripts/mysql_install_db --basedir=/application/mysql/ --datadir=/application/mysql/data --user=mysql
NOTE:初始化數據庫(建庫),初始化的是mysql基本運行所必須的一些「系統庫」(元數據)。
7) 設置屬主和屬組
chown -R mysql.mysql /application/mysql/
8) 將MySQL啓動中止重啓的腳本添加到init.d文件下,並改名爲mysqld
cp support-files/mysql.server /etc/init.d/mysqld
9) 設置MySQL服務腳本的權限爲700
chmod 700 /etc/init.d/mysqld
10) 配置MySQL服務爲開機自啓動(能夠根據實際須要,選擇是否開機自啓動)
chkconfig mysqld on
chkconfig --list mysqld
11) 啓動MySQL
/etc/init.d/mysqld start
12) 查看MySQL是否已經啓動成功
netstat -lntup|grep 3306
13) 添加環境變量,並運行source使環境變量當即生效
echo 'PATH=/application/mysql/bin/:$PATH' >>/etc/profile
tail -1 /etc/profile
source /etc/profile
echo $PATH
14) 安裝完成運行MySQL
mysql
15) 設置MySQL數據庫root管理員賬號的初始密碼
mysqladmin -uroot -p password 'oldboy123'
mysql -uroot -poldboy123
16) 查詢數據庫中已有用戶,刪除掉沒用的用戶和沒用的數據庫
select user,host from mysql.user; drop user ''@'db01'; drop user ''@'localhost'; drop user 'root'@'db01'; drop user 'root'@'::1'; drop user 'root'@'127.0.0.1'; select user,host,password from mysql.user; drop database test; show databases;
17) 查看錯誤日誌
tail -100 /application/mysql/data/db02.err
1) 停數據庫
/etc/init.d/mysqld stop
2) 以「安全模式」登陸數據庫,--skip-grant-tables --skip-networking
/application/mysql/bin/mysqld_safe --skip-grant-tables --skip-networking &
3) 修改密碼
update mysql.user set password=PASSWORD('110') where user='root' and host='localhost'; select user,host,password from mysql.user;
4) 關閉數據庫,並正常啓動數據庫,暫時使用pkill殺掉mysqld進程,後面再介紹其它方法
pkill mysqld
/etc/init.d/mysqld start
5.7中再也不使用password字段進行存儲密碼,使用authentication_string來替代,修改命令以下:
update mysql.user set authentication_string=PASSWORD('123') where user='root' and host='localhost';