【mysql】linux下安裝mysql-5.7.31

依舊ฅ=ฅ發表於2020-09-23

一、下載

進入到mysql官網下載自己對應版本的mysql,

下載地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads

我這裡下載mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz版本

也可以進入linux後用命令下載

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz

二、環境配置

安裝前,我們可以檢測系統是否自帶安裝 MySQL:

rpm -qa | grep mysql

如有,類似

mysql-libs-5.1.52-1.el6_0.1.x86_64

那可以選擇進行解除安裝:

rpm -e mysql-libs-5.1.52-1.el6_0.1.x86_64  // 普通刪除模式

rpm -e --nodeps mysql-libs-5.1.52-1.el6_0.1.x86_64  // 強力刪除模式,如果使用上面命令刪除時,提示有依賴的其它檔案,則用該命令可以對其進行強力刪除

檢查否存在 mariadb 資料庫,如有,解除安裝之,解除安裝同上

rpm -qa | grep mariadb

 如有,類似

mariadb-libs-5.5.56-2.el7.x86_64

則 解除安裝

rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

用WinSCP 5.14.4工具將下載的mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz上傳到linux伺服器的/opt/mysql目錄下面

三、安裝

tar -zxvf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz -C ../servers/

重新命名

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

新增系統mysql組和mysql使用者

檢查mysql組和使用者是否存在,如無建立

cat /etc/group | grep mysql

#類似

mysql:x:490:

cat /etc/passwd | grep mysql

#類似

mysql:x:496:490::/home/mysql:/bin/bash

以上為存在的情況,如無,執行新增命令:

groupadd mysql

useradd -r -g mysql mysql


#useradd -r參數列示mysql使用者是系統使用者,不可用於登入系統

安裝資料庫

建立data目錄

cd mysql-5.7.31

mkdir data

 

將/opt/mysql/mysql-5.7.31的所有者及所屬組改為mysql

chown -R mysql:mysql /export/servers/mysql-5.7.31

在/export/servers/mysql-5.7.31/support-files目錄下建立my_default.cnf

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.


[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

basedir = /export/servers/mysql-5.7.31
datadir = /export/servers/mysql-5.7.31/data
port = 3306
socket = /tmp/mysql.sock
character-set-server=utf8

log-error = /export/servers/mysql-5.7.31/data/mysqld.log
pid-file = /export/servers/mysql-5.7.31/data/mysqld.pid

拷貝,如果提示是否覆蓋,y

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

初始化 mysqld

cd /export/servers/mysql-5.7.31
./bin/mysqld --initialize --user=mysql --basedir=/export/servers/mysql-5.7.31 --datadir=/export/servers/mysql-5.7.31/data/

初始化完成之後,檢視日誌

/export/servers/mysql-5.7.31/data/mysqld.log

臨時密碼

2019-04-08T06:14:29.790033Z 1 [Note] A temporary password is generated for root@localhost: a8?DQir=T+k+

把啟動指令碼放到開機初始化目錄

cp support-files/mysql.server /etc/init.d/mysql

啟動mysql服務

service mysql start

登入mysql,密碼為初始密碼

2020-09-23T09:29:18.970981Z 1 [Note] A temporary password is generated for root@localhost: .L6og)3HPuu1

 

把啟動指令碼放到開機初始化目錄

cp support-files/mysql.server /etc/init.d/mysql

啟動mysql服務

service mysql start

登入mysql,密碼為初始密碼

cd /export/servers/mysql-5.7.31
./bin/mysql -u root -p

 

修改密碼

mysql> set password=password('123456');
mysql> grant all privileges on *.* to root@'%' identified by '123456';
mysql> flush privileges;

新增遠端訪問許可權 

mysql> use mysql;
mysql> update user set host='%' where user = 'root';
mysql> flush privileges;

這裡可能會出現這個錯誤

ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'

如果執行update語句時出現ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' 錯誤,說明有多個ROOT使用者紀錄在USER表中了.

需要select host from user where user = 'root';

檢視一下host是否已經有了%這個值,有了就可以了.

重啟mysql生效

service mysql stop
service mysql start

 或

service mysql restart

 

相關文章