【mysql】centOS7安裝mysql詳細操作步驟!
linux系統安裝mysql版本
需要 root 權限,使用 root 用戶進行命令操作。使用tar文件包,安裝,gz包也可以但是還需要配置用戶,tar包雖然大,但是全啊!
1. 檢查并卸載舊版本 MySQL(如果有)刪除配置文件
查詢是否存在 MariaDB 相關安裝包,MariaDB 是MySQL的一個分支,主要由開源社區在維護,采用GPL授權許可 MariaDB 的目的是完全兼容MySQL,包括API和命令行,使之能輕松成為MySQL的代替品。
rpm -qa | grep mariadb
# 刪除已經安裝的mariadb,通過上面查詢得到的文件名為:mariadb-libs-5.5.60-1.el7_5.x86_64
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
# 再查詢是否存在 MariaDB 相關安裝包
rpm -qa | grep mariadb
# 查看正在運行的 MySQL 服務
在安裝新版本之前,需要確認系統中是否存在舊版本的 MySQL 并將其卸載。
# 查看是否安裝了舊版本 MySQL
rpm -qa | grep mysql
# 如果有相關包,使用以下命令卸載,例如
sudo yum remove mysql*
# 查看系統版本
cat /etc/os-release
# 查看是x86_64,還是arm
uname -m
查看正在運行的 MySQL 服務
ps axj | grep mysql
存在正在運行的 MySQL 服務,停止 MySQL 服務
systemctl stop mysqld
查看 MySQL 服務狀態
systemctl status mysqld
查詢是否存在 MySQL 相關安裝文件
find / -name mysql
存在 MySQL 相關安裝文件,全部刪除
rm -rf /etc/selinux/targeted/active/modules/100/mysql /usr/lib64/mysql /export/server/mysql
# 再次,查詢是否存在 MySQL 相關安裝文件
find / -name mysql
刪除 MySQL 相關配置文件
rm -rf /etc/my.cnf /etc/init.d/mysql /etc/init.d/mysqld
刪除 mysql 用戶和用戶組
userdel mysql
groupdel mysql
2. 下載MySQL +上傳centOS7
訪問 MySQL 官方下載頁面(https://downloads.mysql.com/archives/community/),找到適合【選擇系統,選擇版本】
我用的下載鏈接是:https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar,8.036版本
下載完成后,上傳centOS7 ,我通過rz命令上傳的!
# 創建目錄
mkdir -p /export/server/mysql
# 進入目錄
cd /export/server/mysql
# 上傳
rz 選擇文件
# 解壓到這個目錄,.tar 格式的為打包不壓縮,使用 tar -xvf,解壓后是相關的文件,不是目錄。
tar -xvf mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar -C /export/server/mysql
# 查看解壓后的情況
ls -l /export/server/mysql
3. 安裝依賴+安裝rpm包
安裝 openssl 和 openssl-devel,OpenSSL庫是用于加密和解密數據的庫,MySQL在安全通信時需要使用OpenSSL庫。
yum -y install openssl openssl-devel
安裝 libaio ,libaio庫是Linux異步I/O操作的庫,MySQL在進行I/O操作時需要使用libaio庫。
yum -y install libaio
安裝ncurses,ncurses庫是用于控制終端輸出的庫,MySQL的終端工具需要使用ncurses庫。
yum -y install libncurses*
進入目錄 /export/server/mysql,查看目錄內容
cd /export/server/mysql
ls -l
依次執行以下命令,依次安裝 /export/server/mysql 目錄下的各個.rpm文件,一定要注意安裝順序,要不然安裝不上!
rpm -ivh mysql-community-client-plugins-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-common-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-compat-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-8.0.36-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.36-1.el7.x86_64.rpm
下面這些不用安裝
mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar # 原來的包不用安裝
mysql-community-test-8.0.36-1.el7.x86_64.rpm # 測試包
mysql-community-server-debug-8.0.36-1.el7.x86_64.rpm # debug
mysql-community-debuginfo-8.0.36-1.el7.x86_64.rpm # debuginfo
4. 配置 MySQL
修改配置文件 /etc/my.cnf,在 [mysqld] 中增加配置內容
vim /etc/my.cnf
增加的配置內容以下
# 設置 MySQL 服務運行的端口號
port=3306
# 指定 MySQL 數據庫的默認字符集
character-set-server=utf8mb4
# 允許外部訪問
bind-address=0.0.0.0
# 設置client連接mysql時的字符集,防止亂碼
init_connect='SET NAMES utf8mb4'
# 設置 MySQL 允許訪問的最大連接數
max_connections=1000
# 指定MySQL服務器存儲數據文件的目錄
datadir=/var/lib/mysql
# 是否對sql語句大小寫敏感,1表示不敏感
lower_case_table_names=1
# 事務隔離級別,默認為可重復讀,mysql默認可重復讀級別(此級別下可能參數很多間隙鎖,影響性能)
transaction_isolation=READ-COMMITTED
# TIMESTAMP如果沒有顯示聲明NOT NULL,允許NULL值
explicit_defaults_for_timestamp=true
目錄授權,初始化,生成root用戶
# 清空目錄
sudo rm -rf /var/lib/mysql/*
# 授權
sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod -R 755 /var/lib/mysql
# 初始化mysql數據庫
sudo mysqld --initialize --user=mysql
[mysqld]
port=3306
character-set-server=utf8mb4
bind-address=0.0.0.0
init_connect='SET NAMES utf8mb4'
max_connections=1000
datadir=/var/lib/mysql
lower_case_table_names=1
transaction_isolation=READ-COMMITTED
explicit_defaults_for_timestamp=true
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
5. 啟動 MySQL
【MySQL 安裝完成后,會自動配置名稱為 mysqld 的服務,可以被 systemctl 管理。】
啟動 MySQL 服務
sudo systemctl start mysqld.service
查看 MySQL 服務
systemctl status mysqld.service
查看 MySQL 服務進程
ps axj | grep mysqld
設置 MySQL 服務開機自動啟動
systemctl enable mysqld.service
6. 登錄 MySQL
- 方式1:
獲取臨時密碼進行登錄
獲取 MySQL 日志文件的路徑,查看配置文件 /etc/my.cnf 中的 log-error 的內容 /var/log/mysqld.log 就是 MySQL 日志文件的路徑
cat /etc/my.cnf
再查看 MySQL 日志文件 /var/log/mysqld.log,使用通道符按關鍵字直接檢索,獲取臨時密碼
grep "temporary password" /var/log/mysqld.log
登錄 MySQL
mysql -u root -p
不修改密碼,不允許執行SQL命令。
修改密碼,MySQL默認的密碼策略是要包含大寫字母、小寫字母、數字、特殊字符,長度大于8位
alter user 'root'@'localhost' identified by '復雜的密碼';
退出 MySQL
exit;
重新登錄 MySQL,使用修改后的密碼
mysql -u root -p
- 方式2:
跳過密碼驗證進行登錄。不推薦。除非通過方式1獲取不到臨時密碼,或者使用過程中忘記密碼了。
修改 /etc/my.cnf 配置文件,在 [mysqld] 后面任意一行添加 skip-grant-tables
vim /etc/my.cnf
重啟 MySQL
systemctl restart mysqld
登錄 MySQL(無 -p 選項,無需密碼登錄)
mysql -u root
刷新權限 ,需要刷新權限之后才能修改密碼
flush privileges;
修改密碼,MySQL默認的密碼策略是要包含大寫字母、小寫字母、數字、特殊字符,長度大于8位
alter user 'root'@'localhost' identified by '復雜的密碼';
退出 MySQL
exit;
再修改 /etc/my.cnf 配置文件,將 skip-grant-tables 這行注釋或刪除掉
vim /etc/my.cnf
重啟 MySQL
systemctl restart mysqld
7. 開放端口
查看 MySQL 服務監聽哪些端口
netstat -nap | grep mysqld
檢查端口是否開放
firewall-cmd --zone=public --query-port=3306/tcp
開放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重新加載
firewall-cmd --reload
# 再檢查端口是否開放
firewall-cmd --zone=public --query-port=3306/tcp
8. 設置遠程登錄
MySQL8默認只能本地連接,不允許遠程終端連接
登錄 MySQL,新建 root_rw 用戶,允許在遠程終端(192.168.88.1)上遠程登錄, % 代表所有終端
mysql -u root -p
create user 'rw'@'192.168.88.1' identified by '復雜的密碼';
# create user 'rw'@'%' identified by '復雜的密碼';
授予權限(最大權限)
grant all privileges on *.* to 'rw'@'192.168.88.1';
# grant all privileges on *.* to 'rw'@'%';
刷新權限
flush privileges;
查看用戶情況
SELECT host, user FROM mysql.user
9. 測試遠程登錄
可以使用SQLyog, Navicate, DataGrip 等工具鏈接測試!
10. 刪除安裝文件
刪除安裝包文件
rm -rf /root/mysql-8.4.3-1.el7.x86_64.rpm-bundle.tar
刪除安裝包解壓的安裝目錄
rm -rf /export/server/mysql
如果出現不是東八區時間,可以
select now(); # SET time_zone = '+08:00'; SET GLOBAL time_zone = '+08:00';