linux mysql 5.7 離線安裝(tar.gz)
1. 官網(wǎng)下載壓縮包
mysql 下載地址
https://downloads.mysql.com/archives/community/
5.7最新安裝包下載
https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz

image.png
2. 查詢并卸載系統(tǒng)自帶的Mariadb
rpm -qa | grep mariadb
rpm -e --nodeps 文件名

在這里插入圖片描述
3. 將壓縮包放入服務(wù)器安裝目錄下(/usr/local),解壓,重命名為mysql
#解壓命令
tar -xzvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
#重命名
mv mysql-5.7.28-linux-glibc2.12-x86_64 mysql
4. 檢測mysql用戶和mysql用戶組是否存在,不存在則創(chuàng)建
#檢測是否存在,如無則創(chuàng)建
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
*若存在請忽略創(chuàng)建
#創(chuàng)建mysql用戶組
groupadd mysql
#創(chuàng)建一個用戶名為mysql的用戶,并加入mysql用戶組
useradd -g mysql mysql
#修改mysql用戶的登陸密碼(不少于8位)
passwd mysql
在這里插入圖片描述
5. 修改mysql文件夾下所有文件的用戶和用戶組
chown -R mysql:mysql mysql/
6. 創(chuàng)建mysql配置文件 my.cnf(位置/etc下面)
cd /etc
vi my.cnf
#將下面的my.cnf的內(nèi)容復制進來,并保存
my.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]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# socket = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 設(shè)置mysql客戶端默認字符集
socket=/var/lib/mysql/mysql.sock
[mysqld]
#skip-name-resolve
#設(shè)置3306端口
port = 3306
socket=/var/lib/mysql/mysql.sock
# 設(shè)置mysql的安裝目錄
basedir=/usr/local/mysql
# 設(shè)置mysql數(shù)據(jù)庫的數(shù)據(jù)的存放目錄
datadir=/usr/local/mysql/data
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
tmpdir = /tmp/mysql
# 允許最大連接數(shù)
max_connections=200
# 服務(wù)端使用的字符集默認為8比特編碼的latin1字符集
character-set-server=utf8
# 創(chuàng)建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
#lower_case_table_name=1
max_allowed_packet=16M
user=mysql
7. 創(chuàng)建my.cnf中配置的相關(guān)目錄
#創(chuàng)建目錄
mkdir /var/lib/mysql
#賦權(quán)限
chmod 777 /var/lib/mysql
8. 初始化mysql數(shù)據(jù)庫
/usr/local/mysql/bin/mysqld --initialize --user=mysql
報錯如下:

在這里插入圖片描述
解決方式:yum -y install numactl
9. 配置mysql服務(wù)開機自啟動
#復制啟動腳本到資源目錄
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
#增加mysqld服務(wù)控制腳本執(zhí)行權(quán)限
chmod +x /etc/rc.d/init.d/mysqld
# 將mysqld服務(wù)加入到系統(tǒng)服務(wù)
chkconfig --add mysqld
# 檢查mysqld服務(wù)是否已經(jīng)生效
chkconfig --list mysqld
# 切換至mysql用戶,啟動mysql
service mysqld start
#啟動成功如下圖:

在這里插入圖片描述
10. 配置環(huán)境變量
vim /etc/profile
#最下面增加如下
export PATH=$PATH:/usr/local/mysql/bin
#刷新環(huán)境變量使之生效
source /etc/profile
11. 修改mysql密碼(廢了老勁了)
#獲取root用戶密碼,若沒有該文件,往下看有解決方式
cat /root/.mysql_secret
#登陸mysql
mysql -uroot -p
#輸入剛才的密碼,回車報錯如下:

在這里插入圖片描述
解決方式: ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
- 重啟mysql服務(wù),再次輸入密碼,又報錯了。
在這里插入圖片描述
默認的密碼不好使或者沒有默認密碼,如下解決:
#停止mysql服務(wù)
service mysqld stop
#以不啟用grant-tables模式啟動mysql
mysqld_safe --skip-grant-tables &
mysql -uroot -p 直接回車進去
use mysql;
#更新密碼如下,5.7版本下的mysql數(shù)據(jù)庫下已經(jīng)沒有password這個字段了,password字段改成了authentication_string
update user set authentication_string=password('111111') where user='root';
#刷新權(quán)限
flush privileges;
12. 給mysql賦遠程連接權(quán)限
#登陸mysql
mysql -uroot -p
#選擇mysql
use mysql
#若報錯如下,需要重置密碼。
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
#重置密碼
SET PASSWORD = PASSWORD('111111');
#設(shè)置密碼永不過期
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
#賦遠程訪問權(quán)限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '111111';
#刷新
FLUSH PRIVILEGES;
