2019獨角獸企業重金招聘Python工程師標準>>>
1.下載mysql5.7
mysql的官方下載地址
打開之后我們選擇對應的系統版本進行下載,之后選擇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
1. 安裝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 numactlyum install libaio
yum install perl-Time-HiRes per-devel
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
有如下提示說明安裝成功
1.??? 配置mysql
?安裝完畢之后我們就可以嘗試登錄mysql數據庫了,但是當我運行mysql的時候又發生了意外
經過我的初步判斷應該是mysql的服務沒有啟動,我們查詢一下mysql的狀態
service mysqld status? --注意此處是 mysqld
果然不出我所料,下面我們啟動mysql的服務
service mysqld start
我們發現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之旅吧!
?
?
默認情況下,mysql只允許locathost本地登陸,用mysql workbentch 是無法遠程登陸的。
root@localhost,代表root只允許本地用戶登陸,
所以必須允許root 從任何ip地址登陸。
mysql> grant all privileges on *.* to 'root'@'%' identified by 'Yes@126.com';
grant all privileges on *.* to 'root'@'%' identified by 'Huawei12#$';