- 下載mysql5.7
打開之后我們選擇對應的系統版本進行下載,之后選擇nothanks,不登陸直接下載(如果只是搭建最基本的的mysql的server只需要下載上圖4個基本rpm文件即可):
如果你的linux系統可以直接上網,那么可以直接復制下面的命令執行,即可在當前目錄下載mysql。
服務器端下載:
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-server-5.7.18-1.el7.x86_64.rpm
客戶端下載:
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-client-5.7.18-1.el7.x86_64.rpm
lib下載:
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-libs-5.7.18-1.el7.x86_64.rpm
common下載:
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-common-5.7.18-1.el7.x86_64.rpm
嫌麻煩的童鞋可以直接下載第一個rpm-bundle(集合版)可以一勞永逸,這里我也給出下載地址:
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar
- 安裝mysql
下載完成后,首先需要我們看一下4個包的依賴關系。
mysql-community-common-5.7.18-1.el7.x86_64.rpm mysql-community-libs-5.7.18-1.el7.x86_64.rpm --(依賴於common) mysql-community-client-5.7.18-1.el7.x86_64.rpm --(依賴於libs) mysql-community-server-5.7.18-1.el7.x86_64.rpm --(依賴於client、common)
我們依次執行安裝命令:
rpm -ivh mysql-*.rpm
出現了如下錯誤:
error: Failed dependencies: libnuma.so.1()(64bit) is needed by mysql-community-server-5.7.18-1.el7.x86_64 libnuma.so.1(libnuma_1.1)(64bit) is needed by mysql-community-server-5.7.18-1.el7.x86_64 libnuma.so.1(libnuma_1.2)(64bit) is needed by mysql-community-server-5.7.18-1.el7.x86_64
通過讀錯誤信息我們可以看出是缺少了依賴,經過我的研究發現是缺少了numactl.rpm,我在centos7安裝鏡像的package目錄中提取三個numactl.rpm文件,
把三個文件復制至同一文件夾下,使用通配符安裝目錄下所有rpm文件:
rpm -ivh numactl-*.rpm
如果找不到numactl.rpm文件,但是你的linux可以聯網的話也已使用包管理器yum安裝:
yum install numactl
numactl.rpm安裝完成之后我們又看到如下錯誤:
error: Failed dependencies: mariadb-libs is obsoleted by mysql-community-libs-5.7.18-1.el7.x86_64
這是因為centos7 已經不支持mysql,所以內部集成了mariadb,而安裝mysql的話會和mariadb的文件沖突,所以需要先卸載掉mariadb。
列出所有被安裝的rpm package
rpm -qa | grep mariadb
卸載 mariadb
rpm -e mariadb-libs-5.5.35-1.el7_0.x86_64
錯誤:依賴檢測失敗:
libmysqlclient.so.18()(64bit) postfix-2:2.10.1-6.el7.x86_64
libmysqlclient.so.18(libmysqlclient_18)(64bit) postfix-2:2.10.1-6.el7.x86_64
這時我們忽略依賴,強制卸載,加上 --nodeps
rpm -e --nodeps mariadb-libs-5.5.37-1.el7_0.x86_64
卸載完畢后重新安裝mysql
rpm -ivh mysql-*.rpm
最后檢查(注意大小寫)
rpm -qa | grep mysql
有如下提示說明安裝成功
- 配置mysql
安裝完畢之后我們就可以嘗試登錄mysql數據庫了,但是當我運行mysql的時候又發生了意外,
經過我的初步判斷應該是mysql的服務沒有啟動,我們查詢一下mysql的狀態
service mysqld status --注意此處是 mysqld
果然不出我所料,下面我們啟動mysql的服務
service mysqld start
再次查詢mysql的狀態
我們發現mysql的服務已經處於runing狀態。此時我們再次登錄mysql,正常情況下此時應該已經登錄成功了,但是博主的mysql卻並不能免密登錄,可能是mysql的版本問題。
經過查找資料得知,我們需要首先需要初始化mysql的密碼,有兩種方法。我們先停止mysql:
service mysqld stop
mysql_install_db --datadir=/var/lib/mysql //必須指定datadir,執行后會生成~/.mysql_secret密碼文件 mysqld --initialize //新版的推薦此方法,執行后會在/var/log/mysqld.log生成隨機密碼
我使用第一種方法,執行成功后在~/目錄即root目錄下並沒有生成 .mysql_secret密碼文件。(此處可能是因為我已經啟動過一次服務的原因,后面也會提到)。
我遂放棄這一種方法,因為下面的方法也正好是新版推薦的。(如果需要深入了解此命令請查看官方文檔)
但是當我執行第二種方法時,卻產生如下錯誤。
2017-05-11T01:41:54.675302Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting. 2017-05-11T01:41:54.675339Z 0 [ERROR] Aborting
意思就是說我的/var/lib/mysql目錄下有文件,我猜這兩個命令都不成功的原因是因為我運行過一次mysql,
於是我清空/var/lib/mysql目錄,在/var/lib/mysql下執行
rm -rf *
再次執行
mysqld --initialize
果然成功,執行以下命令查看日志。
cat /var/log/mysqld.log
上面的我們都不看,直接看最下面有一個臨時密碼。
此時我們再次啟動mysql
service mysqld start
啟動mysql后,我們使用臨時密碼登錄.
mysql -uroot -p
登陸成功后是不能進行任何操作的,否則會報
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
此時我們必須先修改mysql的密碼:
SET PASSWORD = PASSWORD('new password');
然后退出quit或者exit,並用新密碼重新登錄。
如果登錄成功,我們的mysql就安裝好啦。
恭喜你,讓我們開啟愉快的mysql之旅吧!
補充一點,這樣設置完成之后只允許本機登錄,如果你需要其他客戶端遠程連接時,則必須執行下一語句授權:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密碼' WITH GRANT OPTION;