CentOS 6.5 源码安装 mysql 5.6
為什么80%的碼農(nóng)都做不了架構師?>>> ??
參見?mysql 文檔
CentOS 6.5下通過yum安裝的MySQL是5.1版的,比較老,所以就想通過源代碼安裝高版本的5.6.40。
1. 卸載舊版本
使用下面的命令檢查是否安裝有MySQL Server????
rpm -qa | grep mysql如果有的話通過下面的命令來卸載掉
普通刪除模式
rpm -e mysql ??強力刪除模式 : 如果使用上面命令刪除時,提示有依賴的其它文件,則用該命令可以對其進行強力刪除
rpm -e --nodeps mysql ? ?2. 添加組和用戶及安裝目錄權限????
#添加組 sudo groupadd mysql #創(chuàng)建用戶mysql并加入到mysql組,不允許mysql用戶直接登錄系統(tǒng) sudo useradd -g mysql mysql -s /bin/false?#創(chuàng)建MySQL安裝目錄 sudo mkdir?-p?/usr/local/mysql #創(chuàng)建MySQL安裝目錄 sudo mkdir?-p?/usr/local/mysql/data #設置MySQL數(shù)據(jù)庫目錄權限 sudo chown -R mysql:mysql /usr/local/mysql/data3. 安裝MySQL
yum -y install make gcc-c++ cmake bison-devel ?ncurses-develmysql下載地址
記住下載的是源碼包:
源碼包的名稱為 : mysql-5.6.40.tar.gz
如果你現(xiàn)在的包名為 : mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz 說明下載的為編譯版。
#解壓縮 tar xvf mysql-5.6.14.tar.gz#進入mysql目錄 cd mysql-5.6.14運行cmake命令:
cmake \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DMYSQL_DATADIR=/usr/local/mysql/data \-DSYSCONFDIR=/etc \-DWITH_MYISAM_STORAGE_ENGINE=1 \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_MEMORY_STORAGE_ENGINE=1 \-DWITH_READLINE=1 \-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \-DMYSQL_TCP_PORT=3306 \-DENABLED_LOCAL_INFILE=1 \-DWITH_PARTITION_STORAGE_ENGINE=1 \-DEXTRA_CHARSETS=all \-DDEFAULT_CHARSET=utf8 \-DDEFAULT_COLLATION=utf8_general_ci????注:如果cmake過程中出錯,需要刪除 CmakeCache.txt文件 -->? rm -f CmakeCache.txt
編譯安裝:
make && make install????注:出錯后重新運行配置,需要刪除 CMakeCache.txt文件
# make clean? # 刪除 CMakeCache.txt 文件 rm -f CMakeCache.txt?????編譯的過程中 如果安裝的是 mysql5.7, 卡在 geofunc.cc.o 獲取其他地方 可能是內(nèi)存不足,需要重新設置內(nèi)存大小,(可以給2-4G 就沒有問題了) 重新編譯和安裝
????編譯參數(shù)參考?5.7??5.6
4. 多實例配置
????創(chuàng)建多個實例,其實就是把DATA文件,SOCK,? PORT指向不同的文件和端口,安裝過程與單例安裝相同,此處以mysql5.6為例
創(chuàng)建不同的實例目錄:dbdata_3306?dbdata_3307?dbdata_3308
/usr/local/mysql/data/dbdata_3306/usr/local/mysql/data/dbdata_3307/usr/local/mysql/data/dbdata_3308注:也可以在/data目錄下創(chuàng)建,個人喜好
初始化配置:
#進入安裝路徑 cd /usr/local/mysql#進入安裝路徑,執(zhí)行初始化配置腳本,創(chuàng)建系統(tǒng)自帶的數(shù)據(jù)庫和表, 分別執(zhí)行下面三條命令 scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/dbdata_3306 --user=mysqlscripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/dbdata_3307 --user=mysqlscripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/dbdata_3308 --user=mysql編輯/etc/my.cnf (如果沒有從mysql目錄拷貝)?
????用mysqld_multi工具查看該配置文件的模板,命令為:mysqld_multi --example
[mysqld_multi] mysqld = /usr/local/mysql/bin/mysqld_safe mysqladmin = /usr/local/mysql/bin/mysqladmin user = admin password = password [mysqld1] socket = /usr/local/mysql/data/dbdata_3306/mysql3306.sock port = 3306 pid-file = /usr/local/mysql/data/dbdata_3306/mysql3306.piddatadir = /usr/local/mysql/data/dbdata_3306 #language = /usr/local/mysql/share/mysql/english user = mysql [mysqld2] socket = /usr/local/mysql/data/dbdata_3307/mysql3307.sock port = 3307 pid-file = /usr/local/mysql/data/dbdata_3307/mysql3307.piddatadir = /usr/local/mysql/data/dbdata_3307 #language = /usr/local/mysql/share/mysql/english user = mysql [mysqld3] socket = /usr/local/mysql/data/dbdata_3308/mysql3308.sock port = 3308 pid-file = /usr/local/mysql/data/dbdata_3308/mysql3308.pid datadir = /usr/local/mysql/data/dbdata_3308 #language = /usr/local/mysql/share/mysql/english user = mysql5. mysql 啟動 關閉 其他設置
查看mysql運行狀態(tài)
/usr/local/mysql/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf report #或 /usr/local/mysql/bin/mysqld_multi report????注:詳見--defaults-file ?--defaults-extra-file 等區(qū)別,此處省略該項 直接report即可
如果執(zhí)行 /usr/local/mysql/bin/mysqld_multi?有提示錯誤:
my_print_defaults command not found.Please make sure you have this command available andin your path. The command is available from the latest MySQL distribution.
ABORT: Can't find command 'my_print_defaults'.This command is available from the latest MySQL,distribution. Please make sure you have the command in your PATH.
就是沒有設置mysql 的環(huán)境變量
[root@localhost data]# vim /etc/profile在文件末尾處添加
export PATH=/usr/local/mysql/bin:$PATH然后執(zhí)行命令
[root@localhost data]# source /etc/profile如果沒有啟動,則啟動mysql
/usr/local/mysql/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf start #或 /usr/local/mysql/bin/mysqld_multi start #或 mysqld_safe --user=mysql --datadir=/usr/local/mysql/data/dbdata_3306 --port=3306 --socket=/usr/local/mysql/data/dbdata_3306/mysql3306.sock &start后不跟序號,則代表啟動全部實例,如果想啟動某一個或某些實例:
/usr/local/mysql/bin/mysqld_multi ?start 1查看相應端口是否已經(jīng)被監(jiān)聽 ?
netstat -tunlp ?| grep mysql查看是否有活動進程 ?
ps -aux | grep mysql?登陸數(shù)據(jù)庫 這里已3306端口的數(shù)據(jù)可為例
mysql -uroot -p -h127.0.0.1 -P3306 ? #或通過sock文件登陸 mysql -uroot -p -S /usr/local/mysql/data/dbdata_3306/mysql3306.sock #或通過sock文件登陸 mysqladmin -uroot -p -S /usr/local/mysql/data/dbdata_3306/mysql3306.sock????提示輸入密碼時,回車即可,默認root無密碼
查看socket文件
mysql> SHOW VARIABLES LIKE 'socket'; ?查看pid文件 ?
mysql> SHOW VARIABLES LIKE '%pid%';?查看數(shù)據(jù),確認 用的mysql_330?哪個文件夾的數(shù)據(jù)
mysql>show variables like '%datadir%';設置root用戶本地密碼
mysql> SET PASSWORD = PASSWORD('123456'); #或 (下面的更直觀一些) set password for root@localhost = password('123456');設置root用戶遠程訪問權限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Tgn2788210' WITH GRANT OPTION;????注: Tgn2788210為遠程訪問時root用戶的密碼,可以和本地不同。
添加用戶,給予關閉權限(用于關閉數(shù)據(jù)庫)?
#該用戶的賬號admin與密碼password 與 /etc/my.cnf中[mysqld_multi]相同 用于關閉數(shù)據(jù)庫 mysql> GRANT SHUTDOWN ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password';#生效 mysql> flush privileges;????注: 3307 3308 端口的數(shù)據(jù)可 使用相同的方式 設置root用戶 與 關閉數(shù)據(jù)庫的用戶admin
????注: 登錄后應當首先設置root密碼,處于安全考慮,還需要刪除系統(tǒng)中沒有密碼的帳號。
mysql> use mysql; mysql> delete from user where password is null or password = '';關閉 mysql 數(shù)據(jù)庫????
#(推薦) mysqladmin?-uroot --port=3306 --socket=/usr/local/mysql/data/dbdata_3306/mysql3306.sock -p shutdown #或 mysqld_multi stop --password=password #或 不建議使用 killall mysqld????注:使用musqld_multi stop關閉數(shù)據(jù)庫,需要事先設置有shutdown權限的賬戶和密碼,并寫入my.cnf文件中,參見 ?mysqld_multi stop is not working
6. 防火墻配置
????防火墻的3306端口默認沒有開啟,若要遠程訪問,需要開啟這個端口
vim /etc/sysconfig/iptables????在“-A INPUT –m state --state NEW –m tcp –p –dport 22 –j ACCEPT”,下添加:
#mysql 3306 -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #mysql 3307 -A INPUT -m state --state NEW -m tcp -p tcp --dport 3307 -j ACCEPT #mysql 3308 -A INPUT -m state --state NEW -m tcp -p tcp --dport 3308 -j ACCEPT????然后保存,并關閉該文件,在終端內(nèi)運行下面的命令,刷新防火墻配置:
service iptables restart7. 安裝 5.7版本 多實例 mysql
7.1 cmake 不同
cmake \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DMYSQL_DATADIR=/usr/local/mysql/data \-DSYSCONFDIR=/etc \-DWITH_MYISAM_STORAGE_ENGINE=1 \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \-DMYSQL_TCP_PORT=3306 \-DENABLED_LOCAL_INFILE=1 \-DWITH_PARTITION_STORAGE_ENGINE=1 \-DEXTRA_CHARSETS=all \-DDEFAULT_CHARSET=utf8 \-DWITH_BOOST=/usr/local/boost/ \-DDEFAULT_COLLATION=utf8_general_ci區(qū)別:
5.7 以后沒有這兩個選項
-DWITH_MEMORY_STORAGE_ENGINE=1 \? ?? -DWITH_READLINE=1 \5.7 以后新增選項
-DWITH_BOOST=/usr/local/boost/boost_1_59_0????直接手動下載在boost目錄中解壓,boost目錄需手動創(chuàng)建,如果出現(xiàn)?cmake編譯MySQL時報錯:the source directory "xxx" does not exist ,應該是空格與換行的問題, \ 代表換行。
????從mysql 5.7.5以后Boost庫是必需的,下載Boost庫,在解壓后復制到/usr/local/boost目錄下?然后重新cmake并在后面的選項中加上選項 -DWITH_BOOST=/usr/local/boost ?可以到?boost下載,如果沒有,會報 參見-->?cmakeError
7.2 初始化數(shù)據(jù)庫?命令不同
5.7版本 使用 mysqld命令進行初始化
mysqld ?--initialize --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/dbdata_3306 --user=mysql????注:在初始化時如果加上?--initial-insecure,則會創(chuàng)建空密碼的 root@localhost?賬號,否則會創(chuàng)建帶密碼的 root@localhost?賬號,密碼直接寫在 log-error 日志文件中(在5.6版本中是放在 ~/.mysql_secret 文件里,更加隱蔽,不熟悉的話可能會無所適從)????
? ? 參考文檔?https://dev.mysql.com/doc/refman/5.7/en/mysql-install-db.html
8. mysql 5.6 ?5.7 單實例安裝
????1.? 不需要創(chuàng)建 dbdata_3306等實例目錄,初始化時 直接使用/usr/local/mysql/data 即可
????2. 不需要使用/etc/my.cnf 文件
????在啟動MySQL服務時,會按照一定次序搜索my.cnf,首先會先在/etc目錄下找該文件,找不到則會搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,這是新版MySQL的配置文件的默認位置;在CentOS 6.5版操作系統(tǒng)的最小安裝完成后,在/etc目錄下會存在一個my.cnf,需要將此文件更名為其他的名字,如:/etc/my.cnf.bak,否則,該文件會干擾源碼安裝的MySQL的正確配置,造成無法啟動。
????在使用"yum update"更新系統(tǒng)后,需要檢查下/etc目錄下是否會多出一個my.cnf,如果多出,將它重命名成別的。否則,MySQL將使用這個配置文件啟動,可能造成無法正常啟動等問題。
? ? 3. 啟動mysql
????添加服務,拷貝服務腳本到init.d目錄,并設置開機啟動
????cp support-files/mysql.server ?/etc/init.d/mysql
????chkconfig mysql on
????service mysql start ?-- 啟動MySQL
????推薦使用修改 rc.local 文件
9. mysql 編譯版安裝(可單實例,可多實例)
????1. 下載編譯版 mysql 解壓,移動,重命名
tar -zxvf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gzmv mysql-5.6.40-linux-glibc2.12-x86_64 /usr/local/mysql????2. 創(chuàng)建 linux 用戶 -->? mysql 并賦予該用戶相應權限
????3. 初始化 mysql (如果是多實例安裝,提前創(chuàng)建多實例目錄 dbdata_3306 等)
10. 多實例mysql 開機自啟動
????修改rc.local文件,添加以下內(nèi)容
/usr/local/mysql/bin/auto-startup.sh????auto-startup.sh 內(nèi)容為?
export PATH=/usr/local/mysql/bin:$PATH/usr/local/mysql/bin/mysqld_multi?--defaults-extra-file=/etc/my.cnf??start?? ? 必須引入環(huán)境變量,否則報錯,具體信息可以改變 rc.local腳本
/usr/local/mysql/bin/auto-startup.sh >> /root/debug.txt?
轉(zhuǎn)載于:https://my.oschina.net/grubby/blog/1801028
《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的CentOS 6.5 源码安装 mysql 5.6的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: POJ-2481 Cows---树状数组
- 下一篇: 【bootstrap组件】几个常用的好用