centos7安裝最新穩定GA版mysql-5.7.31實戰全過程詳解


centos7安裝最新穩定GA版mysql-5.7.31實戰全過程詳解
ps:mysql最新GA版是5.7.31了,之前是5.7.28
1.查詢數據庫版本
mysqld -version
mysqld (mysqld 5.7.31)
2. 卸載自帶的mariadb和mysql
# rpm -qa | grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
# rpm -qa | grep mysql

如果沒有,就可以安裝mysql,如果有,需要先卸載(remove后為上面命令查詢到的內容,全文件名)
yum remove mariadb-libs-5.5.60-1.el7_5.x86_64
卸載完成提示Complete!即可

3.下載mysql文件
下載地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
版本選擇:5.7.31,系統選擇:Linux - Generic,系統版本選擇:Linux - Generic(glibc 2.12)(x86,64-bit)
選擇Compressed TAR Archive (mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz) 下載

https://dev.mysql.com/downloads/file/?id=496462

下載頁面不用登錄或注冊,點擊
No thanks, just start my download.
進行下載即可,下載后上傳到服務器/opt/mysql目錄下進行安裝

 

 

注:由於這個在國內下載速度很慢,上傳速度也很慢
可以直接復制瀏覽器下載里面的url地址,在服務器上用wget命令直接下載
到/opt/mysql目錄下(沒有mysql目錄則創建一個)執行:wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz

4.安裝數據庫
進入/opt/mysql目錄下解壓
tar -zxvf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
解壓完成后重命名
mv mysql-5.7.31-linux-glibc2.12-x86_64 mysql-5.7.31

檢查mysql組和用戶是否存在,如果沒有則創建
# cat /etc/group|grep mysql
# groupadd mysql
# useradd -r -g mysql mysql

注:useradd -r 參數表示mysql用戶是系統用戶,不可用於登錄系統

創建data目錄
# cd /opt/mysql/mysql-5.7.31
# mkdir data
# ls
bin data docs include lib LICENSE man README share support-files

將/opt/mysql/mysql-5.7.31 的所有者及所屬組改為mysql
# chown -R mysql:mysql /opt/mysql/mysql-5.7.31

在/opt/mysql/mysql-5.7.31/support-files目錄下創建my_default.cnf
# cd /opt/mysql/mysql-5.7.31/support-files
# vim my_default.cnf

添加下面內容:
[mysqld]

#設置mysql的安裝目錄
basedir = /opt/mysql/mysql-5.7.31
#設置mysql數據庫的數據存放目錄
datadir = /opt/mysql/mysql-5.7.31/data
#設置端口
port = 3306

socket = /tmp/mysql.sock
#設置字符集
character-set-server=utf8
#日志存放目錄
log-error = /opt/mysql/mysql-5.7.31/data/mysqld.log
pid-file = /opt/mysql/mysql-5.7.31/data/mysqld.pid
#允許時間類型的數據為零(去掉NO_ZERO_IN_DATE,NO_ZERO_DATE)
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

保存退出

拷貝my_default.cnf文件到/etc/my.cnf 存在則覆蓋
# cp my_default.cnf /etc/my.cnf

初始化Mysql
./bin/mysqld --initialize --user=mysql --basedir=/opt/mysql/mysql-5.7.31/ --datadir=/opt/mysql/mysql-5.7.31/data/

如果報錯:./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
就安裝libaio,安裝命令:yum install libaio 如果沒有則跳過

初始化完成之后查看日志
cat /opt/mysql/mysql-5.7.31/data/mysqld.log
最后一行里包含了root用戶的臨時密碼如:[Note] A temporary password is generated for root@localhost: 6LkwFig+oi0R

配置環境變量,編輯/etc/profile,方便在任何地方用mysql命令
vim /etc/profile
在最后面添加下面內容:
#mysql
export MYSQL_HOME=/opt/mysql/mysql-5.7.31
export PATH=$PATH:$MYSQL_HOME/bin

重新編譯profile讓配置生效
source /etc/profile

測試方法輸入:mysql -u root -p 提示輸入密碼則說明設置成功了。

設置開機自啟動,把啟動腳本放到開機初始化目錄/etc/init.d/下,注意后面的是mysqld,不是mysql
cp /opt/mysql/mysql-5.7.31/support-files/mysql.server /etc/init.d/mysqld
給mysqld增加執行權限,否則無法正常自啟動
chmod +x /etc/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --list mysqld

測試方法是重啟服務器reboot看看是否自動啟動了,這個留最后進行。
如果重啟服務器后,輸入:mysql -u root -p 報錯如下,說明沒有啟動mysql
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

另外一種可以控制順序的開機自啟動設置方式:
# vim /etc/rc.local
添加systemctl start mysqld

先執行systemctl start mysqld
再執行需要依賴數據庫的腳本xxx.sh(數據庫沒啟動之前執行腳本會失敗)
注:經過多次測試添加service mysqld start,systemctl start mysqld 都無法正常啟動

----------------

啟動mysql
# service mysql start
Starting MySQL.. SUCCESS!

進入mysql並更改密碼
# cd /opt/mysql/mysql-5.7.31
# ./bin/mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
# ./bin/mysql -u root -p6LkwFig+oi0R

mysql> set password=password('myrootPassword888');

mysql> grant all privileges on *.* to root@'%' identified by 'myrootPassword888';

mysql> flush privileges;

添加遠程訪問權限,如果update時報錯(%是特殊字符),查詢一下是否已更改,最后執行刷新。

mysql> use mysql;

mysql> update user set host='%' where user = 'root';
ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'
mysql> select host,user from user where user = 'root';
+-----------+------+
| host | user |
+-----------+------+
| % | root |
| localhost | root |
+-----------+------+
2 rows in set (0.00 sec)

mysql> flush privileges;
mysql> exit;

重啟mysql生效
# service mysql restart
Shutting down MySQL.... SUCCESS!
Starting MySQL. SUCCESS!

常用命令
service mysqld start #啟動
service mysqld stop #關閉    
service mysqld restart #重啟    
service mysqld status  #查看運行狀態

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM