環境版本
Linux:Centos 7 2009 x86_64
Linux用戶:root
Linux初始路徑:/root
MySQL:mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
SSH工具:Xshell 7,Xftp 7
卸載舊版本
我安裝Centos一直都是最小化安裝,缺什么裝什么,但有的人不是,所以防患於未然,先卸載系統本身的mysql,此卸載方式不適用與使用二進制安裝包安裝的方式,只適用於yum安裝和rpm安裝的方式
命令檢查是否已經安裝過mysql,執行命令。如果沒有任何顯示信息,則說明未安裝,如果存在信息,則執行卸載。
# 查看mysql服務的狀態,如果系統提示如下信息則說明沒有mysql服務:
# Redirecting to /bin/systemctl status mysqld.service
# Unit mysqld.service could not be found.
# 如果是service信息輸出則執行service mysqld stop或者service mysql stop命令停止MySQL服務
service mysqld status
# service mysqld stop
# service mysql stop
# 檢測系統是否自帶安裝 mysql,如果沒有信息輸出則說明沒有安裝
rpm -qa | grep mysql
# 如果有信息輸出,則刪除安裝的mysqlL
# 普通刪除模式
rpm -e mysql
# 如果使用上面命令刪除時,提示有依賴的其它文件,則用該命令只刪除mysql套件
rpm -e --nodeps mysql
# 同時檢查/etc/my.cnf配置文件,或者/etc/mysql目錄,有就rm刪除他們。
rm -rf /etc/my.cnf /etc/mysql
Linux依賴環境
mysql在不同版本會有一些不同的依賴,為了避免后面奇奇怪怪的錯誤,最好都安裝上。
yum install libaio libaio-devel numactl-libs wget vim -y
- SLES 11:從 MySQL 5.7.19 開始,Linux Generic tarball 包格式為 EL6 而不是 EL5。作為副作用,MySQL 客戶端 bin/mysql需要
libtinfo.so.5
.(也就是在Linux上做開發的時候安裝mysql客戶端,只安裝服務器端可以忽略)- 一種解決方法是創建一個符號鏈接,例如ln -s libncurses.so.5.6 /lib64/libtinfo.so.5在 64 位系統上或ln -s libncurses.so.5.6 /lib/libtinfo.so.5在 32位系統上位系統。
MySQL二進制安裝包獲取
- 用wget從網上下載
# MySQL官方源地址,因為是國外源,非常慢,通常500Kb/s左右
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
# 163網易鏡像地址,國內源,非常快
wget https://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
- 利用Xftp上傳本地壓縮包,happy~~

總之,最后在/root目錄下我們會得到這樣一個壓縮包

安裝包的處置
# 解壓安裝包
tar -zxvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
# 移動並重命名
mv mysql-5.7.36-linux-glibc2.12-x86_64 /usr/local/mysql
# 進入目標目錄
cd /usr/local/mysql
輸入ll,你會看到如下目錄:

創建MySQL用戶和組
groupadd mysql
# 因為用戶僅用於所有權目的,而不是登錄目的,所以useradd命令使用 -r和-s /bin/false選項
useradd -r -g mysql -s /bin/false mysql
創建指向安裝目錄的符號鏈接
# 為了避免在使用 MySQL 時總是輸入客戶端程序的路徑名,可以將/usr/local/mysql/bin 目錄添加到PATH變量中
vim /etc/bashrc
# 在文件尾部加上如下代碼后保存退出,一定要是最末尾
export PATH=$PATH:/usr/local/mysql/bin
# 刷新文件,使配置生效
source /etc/bashrc


創建相應目錄並賦予合適權限
mkdir -p /usr/local/mysql/data /usr/local/mysql/log
chown mysql:mysql -R /usr/local/mysql/data /usr/local/mysql/log
chmod 750 /usr/local/mysql/data /usr/local/mysql/log
# 如果你掛載了額外的硬盤,自己手動改寫路徑
然后你會得到這樣一個目錄,注意看data和log文件夾的權限、屬性

配置my.cnf配置文件
vim /etc/my.cnf
配置文件內容以及詳解如下
[mysqld]
# 設置能訪問數據庫的ip地址 0.0.0.0代表無限制
bind-address=0.0.0.0
# mysqld 服務端監聽端口
port=3306
# mysql數據庫運行所使用的用戶
user=mysql
# mysql安裝位置
basedir=/usr/local/mysql
# 數據庫存放位置
datadir=/usr/local/mysql/data
# 本地連接的 socket 套接字
socket=/tmp/mysql.sock
# 錯誤日志存放位置
log_error=/usr/local/mysql/log/mysql.err
# 錯誤日志等級
log_warnings = 2
# pid-file文件位置 當MySQL實例啟動時,會將自己的進程ID寫入一個文件中——該文件即為pid文件
pid_file=/usr/local/mysql/mysql.pid
# 默認字符集設置,mysql無腦utf8mb4就對了,別杠,杠就是你對,別問,問就是不知道
character_set_server=utf8mb4
# 數據庫字符集對應排序規則,需要與字符集一一對應
# 對於utf8常用的排序規則可以看這個網址:https://blog.csdn.net/qq_17555933/article/details/101445526
collation_server = utf8mb4_unicode_ci
# 設置 client 連接 mysql 時的字符集,防止亂碼
init_connect='SET NAMES utf8mb4'
# 是否對 sql 語句大小寫敏感,1 表示不敏感
lower_case_table_names = 1
# 禁止mysql使用軟連接
symbolic_links=0
# https://www.cnblogs.com/zqifa/p/mysql-3.html 自己去看
explicit_defaults_for_timestamp=true
無解釋注釋版本
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
log_error=/usr/local/mysql/log/mysql.err
log_warnings = 2
pid_file=/usr/local/mysql/mysql.pid
character_set_server=utf8mb4
collation_server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
lower_case_table_names = 1
symbolic_links=0
explicit_defaults_for_timestamp=true
: 進入命令模式 x 保存退出

初始化mysql
mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --initialize
查看密碼
cat /usr/local/mysql/log/mysql.err

設置MySQL服務
設置開機自啟動
# 將mysql.server放置到/etc/init.d/mysql中
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 賦予可執行權限
chmod +x /etc/init.d/mysqld
# 添加服務
chkconfig --add mysqld
# 顯示服務列表
chkconfig --list
# 如果看到mysql的服務,並且3,4,5都是開的話則成功,如果是關,則鍵入
chkconfig --level 345 mysqld on
# 有些人設置的mysqld,都一樣,服務名字而已

啟動MySQL
service mysql start

如圖所示則是啟動成功,如果你嚴格按照我的步驟來,肯定不會報錯,因為我都是一邊寫一邊復制代碼進Xshell執行的,報錯的按照錯誤代碼自行百度錯誤原因
查看mysql進程
ps -ef|grep mysql

初次設置可能會有很多服務,一般情況下只有最后一個服務
登陸MySQL,使用前面那個隨機生成的密碼
注意!這個密碼只能登錄一次,登錄后不立馬修改密碼的話,這個密碼就會失效!
如果你不慎已經退出來了! 用我們剛剛查看初始隨機密碼的命令:cat /usr/local/mysql/log/mysql.err 再看一次!mysql在你使用初始密碼登錄退出並且沒有修改初始密碼的情況下,會再一次生成密碼

修改root密碼
SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;

驗證剛剛改的密碼是否可行

開放端口
- 直接關閉防火牆
# 停止firewall
systemctl stop firewalld.service
# 禁止firewall開機啟動
systemctl disable firewalld.service
# 查看防火牆狀態
systemctl status firewalld

firewalld的基本使用
啟動: systemctl start firewalld
關閉: systemctl stop firewalld
查看狀態: systemctl status firewalld
開機禁用 : systemctl disable firewalld
開機啟用 : systemctl enable firewalld
- 開放對應端口(推薦)
# 查看防火牆所有開放的端口
firewall-cmd --zone=public --list-ports
# 開放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 關閉3306端口
# firewall-cmd --zone=public --remove-port=3306/tcp --permanent
# 配置重新加載,立即生效
firewall-cmd --reload
–zone #作用域
–add-port=80/tcp #添加端口,格式為:端口/通訊協議
–permanent #永久生效,沒有此參數重啟后失效
如果報這個錯,則說明你防火牆沒有運行,已經被關閉了

一切順利的話,你應該會有以下的輸出


遠程連接
root用戶是默認不允許遠程連接的,如果你現在遠程連接,會報如下錯誤:

解決辦法:
- 本地(Linux服務器上)root用戶登錄mysql
- 輸入以下sql命令
use mysql
# 使root能再任何host訪問
update user set host = '%' where user = 'root';
FLUSH PRIVILEGES;

Ok


最后編輯時間:2022年5月22日15:46:48
- 教程具有時效性,請自行取舍。