最近嘗試在Linux中安裝了解壓版MySQL,期間查閱了許多博客。很多博客看得我很懵逼,因此記錄下自己的安裝過程,方便后續查閱。
環境說明:CentOs7.2
一、清理老的mysql
(1)卸載已有的mysql
查找以前是否裝有mysql命令:
rpm -qa|grep -i mysql
1
1
rpm -qa|grep -i mysql
停止mysql服務,卸載之前安裝的mysql
rpm -ev 包名
1
1
rpm -ev 包名
如果卸載過程中報依賴錯誤,直接在卸載命名后面加參數 --nodeps
rpm -ev 包名 --nodeps
1
1
rpm -ev 包名 --nodeps
(2)查找之前老版本mysql的文件並刪除老版本mysql的文件
find / -name mysql
# 出來一堆列表
# 一個一個刪除就ok
3
1
find / -name mysql
2
# 出來一堆列表
3
# 一個一個刪除就ok
二、安裝前的准備
(1)安裝mysql之前需要確保系統中有libaio依賴
yum search libaio
yum install libaio
2
1
yum search libaio
2
yum install libaio
(2)下載安裝包(tar.gz的包,非rpm和yum)
cd /usr/
mkdir database
cd database
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.22-el7-x86_64.tar.gz
4
1
cd /usr/
2
mkdir database
3
cd database
4
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.22-el7-x86_64.tar.gz
(3)解壓
tar -zxvf mysql-5.7.22-el7-x86_64.tar.gz
mv mysql-5.7.22-el7-x86_64 mysql5.7 #重命名為mysql5.7
2
1
tar -zxvf mysql-5.7.22-el7-x86_64.tar.gz
2
mv mysql-5.7.22-el7-x86_64 mysql5.7 #重命名為mysql5.7
三、安裝
(1)添加用戶和組
#添加用戶組
groupadd mysql
#添加用戶mysql 到用戶組mysql(使用-r參數表示mysql用戶是一個系統用戶,不能登錄)
useradd -r -g mysql mysql
#添加完用下面命令測試,能看到mysql用戶的信息
id mysql
6
1
#添加用戶組
2
groupadd mysql
3
#添加用戶mysql 到用戶組mysql(使用-r參數表示mysql用戶是一個系統用戶,不能登錄)
4
useradd -r -g mysql mysql
5
#添加完用下面命令測試,能看到mysql用戶的信息
6
id mysql
(2)手動創建MySQL data目錄
cd /usr/database/mysql5.7/
mkdir data
2
1
cd /usr/database/mysql5.7/
2
mkdir data
(3)目錄權限設置
將mysql及其下所有的目錄所有者和組均設為mysql
chown -R mysql:mysql /usr/database/mysql5.7/
查看是否設置成功,執行下面命令,可以看到文件的所有者和組都變成了mysql
cd /usr/database/
ll
結果中出現:drwxr-xr-x 10 mysql mysql 4096 Jul 3 13:57 mysql5.7
6
1
將mysql及其下所有的目錄所有者和組均設為mysql
2
chown -R mysql:mysql /usr/database/mysql5.7/
3
查看是否設置成功,執行下面命令,可以看到文件的所有者和組都變成了mysql
4
cd /usr/database/
5
ll
6
結果中出現:drwxr-xr-x 10 mysql mysql 4096 Jul 3 13:57 mysql5.7
(4)配置my.cnf文件
此文件非常重要,初始化之前要把此文件放到 /etc 目錄下
rm -rf /etc/my.cnf
vim /etc/my.cnf
#此文件內容如下(路徑根據自己的實際情況):
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
init-connect='SET NAMES utf8'
basedir=/usr/database/mysql5.7 #根據自己的安裝目錄填寫
datadir=/usr/database/mysql5.7/data #根據自己的mysql數據目錄填寫
socket=/tmp/mysql.sock
max_connections=200 # 允許最大連接數
character-set-server=utf8 # 服務端使用的字符集默認為8比特編碼的latin1字符集
default-storage-engine=INNODB # 創建新表時將使用的默認存儲引擎
x
1
rm -rf /etc/my.cnf
2
vim /etc/my.cnf
3
#此文件內容如下(路徑根據自己的實際情況):
4
[client]
5
port = 3306
6
socket = /tmp/mysql.sock
7
8
[mysqld]
9
init-connect='SET NAMES utf8'
10
basedir=/usr/database/mysql5.7 #根據自己的安裝目錄填寫
11
datadir=/usr/database/mysql5.7/data #根據自己的mysql數據目錄填寫
12
socket=/tmp/mysql.sock
13
max_connections=200 # 允許最大連接數
14
character-set-server=utf8 # 服務端使用的字符集默認為8比特編碼的latin1字符集
15
default-storage-engine=INNODB # 創建新表時將使用的默認存儲引擎
(5)初始化mysql
/usr/database/mysql5.7/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/database/mysql5.7 --datadir=/usr/database/mysql5.7/data
#注意:mysqld --initialize-insecure初始化后的mysql是沒有密碼的
#重新修改下各個目錄的權限
chown -R root:root /usr/database/mysql5.7/ #把安裝目錄的目錄的權限所有者改為root
chown -R mysql:mysql /usr/database/mysql5.7/data/ #把data目錄的權限所有者改為mysql
5
1
/usr/database/mysql5.7/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/database/mysql5.7 --datadir=/usr/database/mysql5.7/data
2
#注意:mysqld --initialize-insecure初始化后的mysql是沒有密碼的
3
#重新修改下各個目錄的權限
4
chown -R root:root /usr/database/mysql5.7/ #把安裝目錄的目錄的權限所有者改為root
5
chown -R mysql:mysql /usr/database/mysql5.7/data/ #把data目錄的權限所有者改為mysql
(6)啟動mysql
/usr/database/mysql5.7/bin/mysqld_safe --user=mysql &
1
1
/usr/database/mysql5.7/bin/mysqld_safe --user=mysql &
(7)修改密碼
cd /usr/database/mysql5.7/bin/
./mysql -u root -p # 默認沒有密碼,直接敲回車就可以
use mysql;
update user set authentication_string=password('這里填你設置的密碼') where user='root';
flush privileges;
exit;
6
1
cd /usr/database/mysql5.7/bin/
2
./mysql -u root -p # 默認沒有密碼,直接敲回車就可以
3
use mysql;
4
update user set authentication_string=password('這里填你設置的密碼') where user='root';
5
flush privileges;
6
exit;
(8)測試登錄
cd /usr/database/mysql5.7/bin/
./mysql mysql -u root -p
輸入密碼后,應該就連接上了
show databases;
exit; #退出
5
1
cd /usr/database/mysql5.7/bin/
2
./mysql mysql -u root -p
3
輸入密碼后,應該就連接上了
4
show databases;
5
exit; #退出
(9)copy啟動腳本並將其添加到服務且設置為開機啟動
#mysql啟動腳本為:/usr/database/mysql5.7/support-files/mysql.server
cp /usr/database/mysql5.7/support-files/mysql.server /etc/init.d/mysql
#添加服務
chkconfig --add mysql
# 顯示服務列表
chkconfig --list
# 開機啟動
chkconfig --level 345 mysql on
# 測試添加的服務是否能用
service mysql status #查看狀態
service mysql start #啟動mysql服務
service mysql stop #停止mysql服務
12
1
#mysql啟動腳本為:/usr/database/mysql5.7/support-files/mysql.server
2
cp /usr/database/mysql5.7/support-files/mysql.server /etc/init.d/mysql
3
#添加服務
4
chkconfig --add mysql
5
# 顯示服務列表
6
chkconfig --list
7
# 開機啟動
8
chkconfig --level 345 mysql on
9
# 測試添加的服務是否能用
10
service mysql status #查看狀態
11
service mysql start #啟動mysql服務
12
service mysql stop #停止mysql服務
四、設置外網可以訪問
在mysql的bin目錄下執行:mysql -uroot -p密碼 登陸到數據:
執行:use mysql;
執行:select host,user from user;
可以看到user為root,host為localhost的話,說明mysql只允許本機連接,那么外網,本地軟件客戶端就無法連接了。
調整方法:
執行:update user set host='%' where user ='root';
執行刷新:flush privileges;
OK!現在可以訪問了!
如果還訪問不了,那可能是防火牆問題,修改下防火牆就ok,修改方法這里就不提了,網上很多資料
9
1
在mysql的bin目錄下執行:mysql -uroot -p密碼 登陸到數據:
2
執行:use mysql;
3
執行:select host,user from user;
4
可以看到user為root,host為localhost的話,說明mysql只允許本機連接,那么外網,本地軟件客戶端就無法連接了。
5
調整方法:
6
執行:update user set host='%' where user ='root';
7
執行刷新:flush privileges;
8
OK!現在可以訪問了!
9
如果還訪問不了,那可能是防火牆問題,修改下防火牆就ok,修改方法這里就不提了,網上很多資料
五、相關說明
(1)mysql服務的啟動和停止命令
service mysql status #查看狀態
service mysql start #啟動mysql服務
service mysql stop #停止mysql服務
3
1
service mysql status #查看狀態
2
service mysql start #啟動mysql服務
3
service mysql stop #停止mysql服務
(2)怎么在Linux中登錄mysql
#進入mysql安裝目錄的bin目錄,然后輸入以下命令
./mysql -u root -p
#然后輸入密碼就登錄成功
exit;#退出mysql
1
#進入mysql安裝目錄的bin目錄,然后輸入以下命令
2
./mysql -u root -p
3
#然后輸入密碼就登錄成功
4
5
exit;#退出mysql