Linux安裝MySql 5.7 附大量圖文說明

前幾天接了個接口項目,按照網上教程安裝mysql數據庫時出現了一堆問題(捂臉),一頓操作後終於成功起起來了。記錄下以免之後再遇到同樣問題。
最主要的一個問題是MySql 5.7以上 與 MySql5.6以下的版本在安裝時大相徑庭,5.6以下版本一般都會提供默認配置文件,5.7以上就不會,比如data文件夾,tmp文件夾等等。並且兩者在初始化時的 命令也不一樣,如果在5.7以上使用5.6以下的初始化命令,系統會發出警告並提示你該用哪個新的命令,這時候如果沒注意就。。。(捂臉),而且5.7以後版本在初始化配置後會提供一個隨機生成的初始密碼。
首先下載mysql
MySql

這裏寫圖片描述

這裏寫圖片描述

選擇Linux - Generic (glibc 2.12) (x86, 64-bit), Compressed TAR Archive下載即可
我這裏下載的是mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz 剛纔上官網看了下,最新的變成8了,這個安裝方式是否與5.7相同我就不清楚了(捂臉)
這裏寫圖片描述
1.把下載完的文件上傳到linux服務器,開始解壓。

tar -xvzf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz

這裏寫圖片描述

2.解壓改下名字,方便後續操作。我這裏命名爲mysql。

mv mysql-5.7.22-linux-glibc2.12-x86_64 mysql

這裏寫圖片描述
3.新建用戶組合用戶。
有可能出現該用戶組和用戶已經存在,這裏是刪除原先用戶組/用戶還是修改新建用戶組/用戶名都看你喜歡怎麼弄了。

groupadd mysql
useradd -r -g mysql mysql

這裏寫圖片描述

4.修改mysql根目錄用戶權限
進入剛纔重命名後的mysql文件夾執行修改權限命令

cd mysql
chown -R mysql .
chgrp -R mysql .
或者
cd mysql
chown -R mysql:mysql  ./

這裏寫圖片描述

5.初始化 MySQL 配置表
這裏會有一個不同點
5.6及以下版本使用的是

./scripts/mysql_install_db --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data 
//user剛纔新建的用戶名,scripts在mysql目錄下

5.7以上改了,如果還是使用上面那個就會提示讓你用--initialize命令

./bin/mysqld --initialize --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data  

從命令中我們可以知道配置時還需要在mysql目錄下存在一個data文件夾,但是5.7沒有提供這個文件夾,所以我們需要自己在mysql根目錄新建一個data文件夾。
否則會報如下提示:

[WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
[ERROR]   The data directory needs to be specified.

data新建完畢後就可以開始初始化了

./bin/mysqld --initialize --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data 

初始化完畢後在命令行最後會提供生成好的隨機密碼,先拷貝下來。
這裏寫圖片描述
新建完後修改權限
這裏寫圖片描述
這時候直接初始化會報如下錯誤

error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

是因爲沒有安裝libaio.so.1
運行安裝yum install libaio,中間會讓你同意下,輸入 y 回車即可
這裏寫圖片描述
繼續初始化
這裏寫圖片描述
可以看到最後一行有提供隨機密碼,記錄下來,我這裏是scXcgee)k9jn

然後修改下權限,把除了data外的所有mysql文件的權限都設置爲root

chown -R root .
chown -R mysql data

這裏寫圖片描述

6.複製配置文件 my-default.cnf
將該文件複製到/etc下,並改名。

cp support-files/my-default.cnf /etc/my.cnf 

這裏有一點很重要,就是tmp文件。
首先,如果你的support-files文件夾下存在my-default.cnf文件,那麼打開看下socket項所指的tmp文件是否存在,如果不存在,則新建,否則會報錯。

如果不存在,很有意思的是我安裝時不存在該文件(捂臉)。
這裏寫圖片描述
沒辦法,既然沒有提供,那隻能自己建了,然後我發現再etc下已經有一個my.cnf了_(:з」∠*)_
這裏寫圖片描述
這是內容

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

很明顯,這是默認配置,而我是把mysql裝在了home目錄中,所以需要修改配置。
附上我的配置文件my.cnf。
basedir就是mysql根目錄
datadir就是上面在mysql根目錄中新建的data文件夾
socket我在mysql根目錄中新建了一個tmp文件夾,然後這裏就指向了她,mysql.sock這個文件在我們啓動mysql時會自動創建。所以我們只要新建tmp文件夾就行了。
這裏寫圖片描述
修改下權限
這裏寫圖片描述
然後最重要的一點來了:如果你的socket指向的地址不在tmp中(linux服務器根目錄中的tmp文件夾)(我指向的地址是/home/mysql/tmp,不在tmp中,要加上client)請在my.cnf中加上[client] socket=/home/mysql/tmp/mysql.sock項,否在在登入時會報錯誤,就是這個錯誤讓我折騰了好久好久(捂臉)。

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket
‘/tmp/mysql.sock’ (2)

[mysqld]
basedir=/home/mysql
datadir=/home/mysql/data
socket=/home/mysql/tmp/mysql.sock
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[client]
socket=/home/mysql/tmp/mysql.sock

[mysqld_safe]
#log-error=/var/log/mariadb/mariadb.log
#pid-file=/var/run/mariadb/mariadb.pid
basedir=/home/mysql
datadir=/home/mysql/data
socket=/home/mysql/tmp/mysql.sock
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

7.啓動和關閉mysql

#/etc/init.d/mysql start   或者   serivce mysql start  或者  ./bin/mysqld_safe&  
#/etc/init.d/mysql stop    或者   service mysql stop   或者  ./bin/mysqladmin -u root -p shutdown

我一般使用./bin/mysqld_safe&命令啓動mysql服務
啓動後檢查下ps -ef|grep mysql檢查下是否啓動
現在沒有啓動
這裏寫圖片描述
啓動
這裏寫圖片描述
輸入bg 後臺運行,然後再運行ps -ef|grep mysql檢查可以看到mysql已經啓動了
這裏寫圖片描述
7.連接mysql

./bin/mysql -uroot -p

這裏寫圖片描述
提示輸入密碼,輸入剛纔記下隨機密碼 ,要手動輸入,不能黏貼哦
連接成功。
這裏寫圖片描述

8.修改密碼
剛纔的密碼只是初始自動生成的隨機密碼,我們在之後如果想要使用mysql的話還需要中心設置下密碼,不然連遠程訪問都幹不了,這裏修改的是root的密碼
這裏寫圖片描述

9.開啓遠程訪問

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> update user set host = ‘%’ where user = ‘root’;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select host, user from user;
+———–+—————+
| host | user |
+———–+—————+
| % | root |
| localhost | mysql.session |
| localhost | mysql.sys |
+———–+—————+
3 rows in set (0.00 sec)

然後退出mysql連接
這裏寫圖片描述
重啓生效

/etc/init.d/mysqld restart
或者
進入mysql安裝根目錄
./bin/mysqladmin -u root -p shutdown
輸入密碼關閉
然後再啓動
./bin/mysqld_safe&

,實在關不掉就用kill命令吧,把mysql保護線程和mysql線程殺掉就OK了,然後再啓動
∠( ᐛ 」∠)_

嘗試遠程連接,OK,大功告成。
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章