MySQL目前最新版本是5.7.x,這里安裝的MySQL版本是穩定的5.6.29版本,和5.7版本的版本安裝過程不太一樣,這里在CentOS 7.2系統上部署過程如下
首先,打開下載鏈接:http://www.mysql.com/downloads/,頁面最上面是企業版,一般個人或者企業使用社區版就足夠了,頁面拉到最下方可以看到下載入口:
點擊鏈接進入,然后選擇第一項進入:
這里默認是5.7.11的版本,我們選擇5.6的下載鏈接進入:
進入后,默認版本就是5.6.19,對於版本這里選擇Linux - Generic,也就是通用的二進制版本
然后上面都是RPM的包,我們拉到頁面最下方根據操作系統位數選擇.tar.gz的包,這里選擇64位的mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz
點擊Download下載到本地,然后上傳到服務器准備安裝
接下來執行安裝過程:
釋放歸檔文件: tar -xvzf mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz
建立mysql目錄並移動至安裝目錄:
mkdir /usr/local/mysql mv mysql-5.6.29-linux-glibc2.5-x86_64 /usr/local/mysql/ cd /usr/local/mysql/mysql-5.6.29-linux-glibc2.5-x86_64/
首先要注意,因為系統可能默認存在/etc/my.cnf,並且里面可能設置好了datadir,socket等屬性,但是這些目錄並不一定是我們想要設置的目錄,比如我們一般會希望默認數據目錄是當前包下的data目錄等,所以一般需要執行 cp support-files/my-default.cnf /etc/my.cnf 覆蓋原有的my.cnf,並且在里面[mysqld]下面添加basedir為我們要安裝的mysql目錄,這樣的話后面安裝都是按照默認的目錄進行,否則后面還得重新設置數據目錄等,比較麻煩,這樣的話其他的優化的參數配置都需要我們后來手動的添加,這一步一定要確認
接下來創建mysql用戶和用戶組:
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
修改當前目錄權限為mysql權限:
chown -R mysql . chgrp -R mysql .
執行安裝: ./scripts/mysql_install_db --user=mysql
如果上一步安裝失敗,提示FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:Data::Dumper的話,那么原因是缺少perl-module,那么執行命令: yum -y install perl-Module-Install.noarch 安裝perl-module模塊,需要下載安裝98個包,這個要耐心等待一會,等待perl-module安裝成功之后,再繼續執行上一步安裝
等安裝成功之后,將權限修改為合適的權限:
chown -R root . chown -R mysql data
然后建立mariadb的日志目錄,否則下一步會報錯,使用命令: mkdir /var/log/mariadb
然后執行mysql安全啟動腳本: bin/mysqld_safe --user=mysql & 執行后,再按一下回車回到命令行,沒報錯則啟動成功
最后將mysql添加到系統服務: cp support-files/mysql.server /etc/init.d/mysql.server
這時候網上一些教程一般都說可以啟動了,但是啟動的時候會提示錯誤:Starting MySQL ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe),表示找不到mysqld_safe,這是因為沒有將mysqld_safe鏈接到上面提示的目錄,可以修改一下配置文件來指定位置,執行 vim /etc/my.cnf 打開配置mysql配置文件,如果意外丟失在剛才安裝過程中mysql安裝目錄下也會生成一個my.cnf和support-files/my-default.cnf完全一致,可以將這個文件拷貝到/etc/下,根據錯誤提示是/mysqld_safe找不到,所以應該配置my.cnf中[mysqld]標識下面的basedir的屬性為mysql的安裝目錄,也就是這里的:/usr/local/mysql/mysql-5.6.29-linux-glibc2.5-x86_64
配置完之后,保存並退出,然后執行 /etc/init.d/mysql.server start 可以正常啟動mysql服務
然后可以執行 bin/mysql 進入mysql交互界面,如果這里出現mysql.sock錯誤的提示,繼續編輯/etc/my.cnf文件,修改其中的socket屬性為:/tmp/mysql.sock即可,或者注釋默認即可,保存並退出;另一種方法推薦在/tmp下做軟鏈接,將my.cnf配置文件中配置的socket位置鏈到提示錯誤的mysql.sock位置,命令是: ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock ;解決之后再次進入mysql交互界面就可以了
輸入 quit 可以退出交互界面,mysql初始密碼為空,可以使用mysqladmin為mysql服務器設置一個密碼:
bin/mysqladmin -u root password '123456'
修改完成后通過執行命令: bin/mysql -uroot -p 回車后繼續輸入密碼即可登錄mysql
如果后續需要修改密碼,因為mysql數據庫密碼是存放在mysql的一個數據庫中的user表中,那么可以通過SQL語句實現,首先登錄mysql數據庫在mysql提示符中進行如下操作即可修改密碼:
mysql> USE mysql; mysql> UPDATE user SET Password=PASSWORD('newpass') WHERE User = 'root'; mysql> FLUSH PRIVILEGES;
通過以上3步即可修改為你想要的密碼,並且下次立即生效,現在數據庫在本地就可以正常使用了,
后來可以把mysql添加至環境變量中,便於直接輸入mysql進入,不用加路徑了,這個是可選的,根據自己的需要即可
現在還要注意一個問題,雖然通過命令行可以進入了,但是我們從其他主機編寫的程序是無法連接到這台服務器的,在生產環境中這樣肯定是不行的,所以我們要對所有主機開放授權,這樣才可以正常訪問,首先我們登錄mysql,然后執行下面命令可以給所有主機開放root用戶的授權:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'setpassword' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES;
第一行指令的%代表所有主機來源,setpassword可以設置和本地mysql不同的密碼,當然一般情況下相同即可,執行完上面的指令后mysql就可以從外網立即連接了,到這里mysql基本的安裝配置就完成了