1)tar.gz版的安裝步驟
1.1)確定安裝環(huán)境
MySQL安裝依賴于libaio庫,如沒有需要安裝。如下:
yum search libaio
yum install libaio
MySQL5.7.19后,支持Non-Uniform Memory Access(非統(tǒng)一內(nèi)存訪問架構(gòu)),Generic Binaries版本已經(jīng)添加了libnuma庫。如果沒有此支持庫宠纯,可以通過操作系統(tǒng)安裝包查找安裝。
1.2) 解壓层释,如:mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
tar zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz -C /usr/local/software
cd /usr/local/
ln -s /usr/local/software/mysql-5.7.21-linux-glibc2.12-x86_64 mysql
mkdir -p /usr/local/mysql/mysql-files
注:由于Generic Binaries版中的shell腳本路徑都是“/usr/local/mysql”,所以創(chuàng)建軟鏈接或重命名文件夾時(shí)不要隨便亂寫婆瓜,否則需要額外修改shell腳本。
1.3) 創(chuàng)建mysql帳戶
mysql帳戶湃累,密碼勃救,用戶組全部都由linux系統(tǒng)創(chuàng)建碍讨。如下
groupadd mysql //創(chuàng)建組
useradd -r -g mysql -s /bin/false mysql //創(chuàng)建用戶并通過-g 指定組為mysql,-s是為用戶指定shell蒙秒,-r為創(chuàng)建一個(gè)系統(tǒng)用戶
passwd mysql //給mysql用戶創(chuàng)建密碼勃黍,回車后需要輸入和確定密碼
1.4) 修改mysql文件夾的擁有者
chown mysql:mysql mysql-files
chmod 750 mysql-files
chown -R mysql:mysql /usr/local/mysql/ 或者 chown -R mysql /usr/local/mysql/;chgrp -R mysql /usr/local/mysql
1.5)添加mysql環(huán)境變量。安裝版的mysql是通過/sbin/mysql來找到mysql命令的不是對(duì)過配置環(huán)境變量晕讲。所以rpm版沒有也無需設(shè)置環(huán)境變量覆获。
vim /etc/profile
添加
MYSQL_HOME=/usr/local/mysql
PATH=$PATH:$MYSQL_HOME/bin
export PATH MYSQL_HOME
注:二進(jìn)制tar.gz或源碼安裝是需要手動(dòng)初始化data的,rpm安裝包自動(dòng)執(zhí)行瓢省。以下1.6 1.7兩個(gè)步驟任選其一弄息。
1.6)使用mysqld命令手動(dòng)初始data文件夾。
cd /usr/local/mysql
bin/mysqld --initialize --user=mysql
注:執(zhí)行mysqld --initialize
或--initialize-insecure
后其內(nèi)部主要做了7件事:
1.檢查data文件夾是否存在勤婚,如果存在并且不為空會(huì)報(bào)錯(cuò)摹量。
2.創(chuàng)建相關(guān)數(shù)據(jù)庫和表以及授權(quán)。
3.服務(wù)器初始化系統(tǒng)表空間和相關(guān)的數(shù)據(jù)結(jié)構(gòu)來管理InnoDB表馒胆。
4.創(chuàng)建一個(gè)'root'@'localhost' 的超級(jí)賬號(hào)以及其他保留賬號(hào)缨称,--initialize參數(shù)會(huì)隨機(jī)生成一個(gè)密碼(--initialize-insecure密碼為空),如圖:
5.服務(wù)端添加幫助信息(in the fill_help_tables.sql file),時(shí)區(qū)表
6.If the
--init-file
option was given to name a file of SQL statements, the server executes the statements in the file. This option enables you to perform custom bootstrapping sequences.7.The server exits.
1.7)使用mysql_install_db腳本初始data文件夾。
cd /usr/local/mysql
bin/mysql_install_db --user=mysql
#或者 手動(dòng)指定basedir,datadir路徑
bin/mysql_install_db --user=mysql \
--basedir=/opt/mysql/mysql \
--datadir=/opt/mysql/mysql/data
更詳細(xì)的操作請(qǐng)參考:https://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization-mysql-install-db.html
1.8)如果你想讓mysql服務(wù)自動(dòng)支持安全鏈接型雳,執(zhí)行ssl相關(guān)的安裝:
bin/mysql_ssl_rsa_setup
1.9)啟動(dòng)mysql服務(wù)
bin/mysqld_safe --user=mysql &
注:默認(rèn)地mysql的輸出日志記錄在 hostname.err文件中当凡,并非是啟動(dòng)錯(cuò)誤。可選項(xiàng):將mysql服務(wù)加入開機(jī)啟動(dòng)
cp support-files/mysql.server /etc/init.d/mysql.server
更加詳細(xì)設(shè)置請(qǐng)參考:https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html
通過
mysql -uroot -p (無密碼使用:mysql -u root --skip-password)
登錄后一定要修改密碼:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!'
可能會(huì)遇到的問題:
1)ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
如果是在一個(gè)空機(jī)器上安裝纠俭,按照上面的步驟是不會(huì)出現(xiàn)這個(gè)問題的沿量。解決方法:刪除安裝目錄下的data(/usr/local/mysql/data),/etc/my.cnf 重新執(zhí)行步驟1.6或1.7。注意:1.6中會(huì)生成一個(gè)mysql root用戶登錄的臨時(shí)密碼用于mysql -uroot -p 時(shí)的密碼輸入柑晒。
2)Access denied for user 'root'@'localhost'
若登錄時(shí)報(bào)的是這個(gè)錯(cuò)欧瘪,說明是密碼輸入不正確。到底輸入哪個(gè)密碼才是正確的呢匙赞?上面說了,初始化數(shù)據(jù)庫時(shí)會(huì)有一個(gè)臨時(shí)密碼妖碉,輸入的就應(yīng)該是這個(gè)涌庭。但是如果還報(bào)錯(cuò),說明MySQL初始化操作不止做了一次欧宜,臨時(shí)密碼并不會(huì)重新生成坐榆。
解決方案:
#先停掉服務(wù)
/usr/local/mysql/support-files/mysql.server stop
#繞過網(wǎng)絡(luò)和權(quán)限驗(yàn)證進(jìn)行登錄
/usr/local/mysql/bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
#修改mysql.user表中的root賬號(hào)密碼
use mysql;
update user set authentication_string=PASSWORD('newpassword') where user='root';#注意5.7版本密碼字段名是authentication_string不是password。
FLUSH PRIVILEGES;
quit;
#使用新密碼登錄,如下操作根據(jù)提示來做冗茸。
mysql -uroot -p
上述mysql的安裝步驟都是官網(wǎng)提供的席镀,按照步驟肯定不會(huì)有問題匹中。唯一卡殼的是初始化后生成的臨時(shí)密碼可能會(huì)忘。
2)yum 安裝方式
https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
3)用上述方式安裝完MySQL數(shù)據(jù)庫后豪诲,遠(yuǎn)程機(jī)器上的客戶端連接mysql服務(wù)會(huì)出錯(cuò)顶捷。
首先將linux上的防火墻關(guān)閉,然后做入下操作:
方法一:
use msyql;update user set host='%' where user='root'
方法二:
grant all privileges on *.* to 'root'@'%' identififed by '密碼' with grant option;
最后:
flush privileges;
不用重啟客戶端就可以直接連接上mysql了屎篱。
MySQL賬戶管理
使用linux創(chuàng)建一個(gè)mysql賬號(hào)只是為了安裝msql數(shù)據(jù)庫服赎,這是mysql安裝需要的。
開發(fā)中的賬號(hào)和密碼推薦使用MySQL Workbench創(chuàng)建交播。