Mysql 安裝
- Mysql 安裝
- 官網(wǎng):http://www.mysql.com/
- 官網(wǎng)下載:http://dev.mysql.com/downloads/mysql/
- 官網(wǎng) 5.5 下載:http://dev.mysql.com/downloads/mysql/5.5.html#downloads
- 官網(wǎng) 5.6 下載:http://dev.mysql.com/downloads/mysql/5.6.html#downloads
- 官網(wǎng) 5.7 下載:http://dev.mysql.com/downloads/mysql/5.7.html#downloads
- 官網(wǎng)幫助中心:http://dev.mysql.com/doc/refman/5.6/en/source-installation.html
- 此時(20160502) Mysql 5.5 最新版本為:5.5.48
- 此時(20160502) Mysql 5.6 最新版本為:5.6.29
- 此時(20160502) Mysql 5.7 最新版本為:5.7.11
- 我個人習(xí)慣
/opt
目錄下創(chuàng)建一個目錄setups
用來存放各種軟件安裝包;在/usr
目錄下創(chuàng)建一個program
用來存放各種解壓后的軟件包鸭蛙,下面的講解也都是基于此習(xí)慣 - 我個人已經(jīng)使用了第三方源:
EPEL、RepoForge
,如果你出現(xiàn)yum install XXXXX
安裝不成功的話,很有可能就是你沒有相關(guān)源荞膘,請查看我對源設(shè)置的文章 - Mysql 5.6 下載:
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.29.tar.gz
(大忻趁帧:31 M) - Mysql 5.7 下載:
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.11.tar.gz
(大薪摹:47 M) - 我們這次安裝以 5.6 為實例
- 進(jìn)入下載目錄:
cd /opt/setups
- 解壓壓縮包:
tar zxvf mysql-5.6.29.tar.gz
- 移到解壓包:
mv /opt/setups/mysql-5.6.29 /usr/program/
- 安裝依賴包叉抡、編譯包:
yum install -y make gcc-c++ cmake bison-devel ncurses-devel
- 進(jìn)入解壓目錄:
cd /usr/program/mysql-5.6.29/
- 生成安裝目錄:
mkdir -p /usr/program/mysql/data
- 生成配置(使用 InnoDB):
sudo cmake -DCMAKE_INSTALL_PREFIX=/usr/program/mysql -DMYSQL_DATADIR=/usr/program/mysql/data -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=utf8 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1
- 編譯:
sudo make
尔崔,這個過程比較漫長,一般都在 30 分鐘左右褥民,具體還得看機(jī)子配置季春,如果最后結(jié)果有 error,建議刪除整個 mysql 目錄后重新解壓一個出來繼續(xù)處理 - 安裝:
sudo make install
- 配置開機(jī)啟動:
sudo cp /usr/program/mysql-5.6.29/support-files/mysql.server /etc/init.d/mysql
sudo chmod 755 /etc/init.d/mysql
sudo chkconfig mysql on
- 復(fù)制一份配置文件:
sudo cp /usr/program/mysql-5.6.29/support-files/my-default.cnf /etc/my.cnf
- 刪除安裝的目錄:
rm -rf /usr/program/mysql-5.6.29/
- 添加組和用戶及安裝目錄權(quán)限
-
sudo groupadd mysql
#添加組 -
sudo useradd -g mysql mysql -s /bin/false
#創(chuàng)建用戶mysql并加入到mysql組消返,不允許mysql用戶直接登錄系統(tǒng) -
sudo chown -R mysql:mysql /usr/program/mysql/data
#設(shè)置MySQL數(shù)據(jù)庫目錄權(quán)限
-
- 初始化數(shù)據(jù)庫:
sudo /usr/program/mysql/scripts/mysql_install_db --basedir=/usr/program/mysql --datadir=/usr/program/mysql/data --skip-name-resolve --user=mysql
- 啟動 Mysql 服務(wù)器:
service mysql start
- 查看是否已經(jīng)啟動了:
ps aux | grep mysql
- 常用命令軟連接载弄,才可以在終端直接使用:mysql 和 mysqladmin 命令
sudo ln -s /usr/program/mysql/bin/mysql /usr/bin
sudo ln -s /usr/program/mysql/bin/mysqladmin /usr/bin
- 進(jìn)入下載目錄:
修改 root 賬號密碼
- 默認(rèn)安裝情況下,root 的密碼是空撵颊,所以為了方便我們可以設(shè)置一個密碼宇攻,假設(shè)我設(shè)置為:123456
- 終端下執(zhí)行:
mysql -uroot
- 現(xiàn)在進(jìn)入了 mysql 命令行管理界面嫡良,輸入:
SET PASSWORD = PASSWORD('123456');
- 現(xiàn)在進(jìn)入了 mysql 命令行管理界面嫡良,輸入:
- 修改密碼后驹针,終端下執(zhí)行:
mysql -uroot -p
- 根據(jù)提示,輸入密碼進(jìn)度 mysql 命令行狀態(tài)惊暴。
- 如果你在其他機(jī)子上連接該數(shù)據(jù)庫機(jī)子報:Access denied for user 'root'@'localhost' (using password: YES)
- 解決辦法:
- 在終端中執(zhí)行:
service mysql stop
- 在終端中執(zhí)行:
/usr/program/mysql/bin/mysqld --skip-grant-tables
- 此時 MySQL 服務(wù)會一直處于監(jiān)聽狀態(tài)译隘,你需要另起一個終端窗口來執(zhí)行接下來的操作
- 在終端中執(zhí)行:
mysql -u root mysql
- 進(jìn)入 MySQL 命令后執(zhí)行:
UPDATE user SET Password=PASSWORD('填寫你要的新密碼') where USER='root';FLUSH PRIVILEGES;
- 重啟 MySQL 服務(wù):
service mysql restart
Mysql 配置
- 官網(wǎng)配置參數(shù)解釋:http://dev.mysql.com/doc/refman/5.6/en/mysqld-option-tables.html
- 找一下當(dāng)前系統(tǒng)中有多少個 my.cnf 文件:
find / -name "my.cnf"
亲桥,我查到的結(jié)果:/etc/my.cnf /usr/program/mysql/my.cnf /usr/program/mysql/mysql-test/suite/ndb/my.cnf /usr/program/mysql/mysql-test/suite/ndb_big/my.cnf ............. /usr/program/mysql/mysql-test/suite/ndb_rpl/my.cnf
- 保留 /etc/my.cnf 和 /usr/program/mysql/mysql-test/ 目錄下配置文件,其他刪除掉固耘。
MySQL 主從復(fù)制
環(huán)境說明和注意點
- 假設(shè)有兩臺服務(wù)器题篷,一臺做主,一臺做從
- MySQL 主信息:
- IP:12.168.1.113
- 端口:3306
- MySQL 從信息:
- IP:12.168.1.115
- 端口:3306
- MySQL 主信息:
- 注意點
- 主 DB server 和從 DB server 數(shù)據(jù)庫的版本一致
- 主 DB server 和從 DB server 數(shù)據(jù)庫數(shù)據(jù)一致
- 主 DB server 開啟二進(jìn)制日志厅目,主 DB server 和從 DB server 的 server-id 都必須唯一
- 優(yōu)先操作:
- 把主庫的數(shù)據(jù)庫復(fù)制到從庫并導(dǎo)入
主庫機(jī)子操作
-
主庫操作步驟
- 創(chuàng)建一個目錄:
mkdir -p /usr/program/mysql/data/mysql-bin
- 主 DB 開啟二進(jìn)制日志功能:
vim /etc/my.cnf
番枚,- 添加一行:
log-bin = /usr/program/mysql/data/mysql-bin
- 指定同步的數(shù)據(jù)庫,如果不指定則同步全部數(shù)據(jù)庫损敷,其中 ssm 是我的數(shù)據(jù)庫名:
binlog-do-db=ssm
- 添加一行:
- 重啟主庫 MySQL 服務(wù)
- 進(jìn)入 MySQL 命令行狀態(tài)葫笼,執(zhí)行 SQL 語句查詢狀態(tài):
SHOW MASTER STATUS;
- 在顯示的結(jié)果中,我們需要記錄下 File 和 Position 值拗馒,等下從庫配置有用路星。
- 設(shè)置授權(quán)用戶 slave01 使用 123456 密碼登錄主庫,這里 @ 后的 IP 為從庫機(jī)子的 IP 地址诱桂,如果從庫的機(jī)子有多個洋丐,我們需要多個這個 SQL 語句。
grant replication slave on *.* to 'slave01'@'192.168.1.135' identified by '123456'; flush privileges;
- 創(chuàng)建一個目錄:
從庫機(jī)子操作
- 從庫操作步驟
- 測試從庫機(jī)子是否能連上主庫機(jī)子:
sudo mysql -h 192.168.1.105 -u slave01 -p
挥等,必須要連上下面的操作才有意義友绝。- 由于不能排除是不是系統(tǒng)防火墻的問題,所以建議連不上臨時關(guān)掉防火墻:
service iptables stop
- 或是添加防火墻規(guī)則:
- 添加規(guī)則:
sudo iptables -I INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
- 保存規(guī)則:
sudo service iptables save
- 重啟 iptables:
sudo service iptables restart
- 添加規(guī)則:
- 由于不能排除是不是系統(tǒng)防火墻的問題,所以建議連不上臨時關(guān)掉防火墻:
- 修改配置文件:
vim /etc/my.cnf
肝劲,把 server-id 改為跟主庫不一樣 - 在進(jìn)入 MySQL 的命令行狀態(tài)下迁客,輸入下面 SQL:
CHANGE MASTER TO
master_host='192.168.1.200',
master_user='slave01',
master_password='123456',
master_port=3306,
master_log_file='mysql3306-bin.000006',>>>這個值復(fù)制剛剛讓你記錄的值
master_log_pos=1120;>>>這個值復(fù)制剛剛讓你記錄的值
- 執(zhí)行該 SQL 語句郭宝,啟動 slave 同步:
START SLAVE;
- 執(zhí)行該 SQL 語句,查看從庫機(jī)子同步狀態(tài):
SHOW SLAVE STATUS;
- 在查看結(jié)果中必須下面兩個值都是 Yes 才表示配置成功:
-
Slave_IO_Running:Yes
- 如果不是 Yes 也不是 No掷漱,而是 Connecting粘室,那就表示從機(jī)連不上主庫,需要你進(jìn)一步排查連接問題卜范。
Slave_SQL_Running:Yes
-
- 如果你的 Slave_IO_Running 是 No育特, 那你可以檢查從庫下的錯誤日志:
cat /usr/program/mysql/data/mysql-error.log
- 如果里面提示 uuid 錯誤,你可以編輯從庫的這個配置文件:
vim /usr/program/mysql/data/auto.cnf
先朦,把配置文件中的:server-uuid 值隨便改一下,保證和主庫是不一樣的犬缨。
- 如果里面提示 uuid 錯誤,你可以編輯從庫的這個配置文件: