CentOS 7 下安裝 MySQL 8.x

2022-10-05 21:00:44

CentOS 7 下安裝 MySQL 8.x

作者:Grey

原文地址:

部落格園:CentOS 7 下安裝 MySQL 8.x

CSDN:CentOS 7 下安裝 MySQL 8.x

環境

CentOS 版本:CentOS 7

下載地址:CentOS 7

安裝方法見:Linux 安裝,快照,克隆

MySQL 版本:MySQL 8.0.30

下載地址見:MySQL 下載

新建使用者組

#> groupadd mysql

建立 MySQL 使用者並分配其使用者組

#> useradd -r -g mysql -s /bin/false mysql

準備必要資料夾並賦予相應的許可權

#> mkdir -p /usr/local/mysql /data/mysql/
#> chown -R mysql.mysql /usr/local/mysql/
#> chown -R mysql.mysql /data/mysql/
#> chmod -R 755 /data/mysql/
#> chmod -R 755 /usr/local/mysql/

注:其中/data/mysql是存放 MySQL 資料的目錄。

安裝必要依賴

#> yum -y install wget gcc gcc-c++ ncurses ncurses-devel libaio-devel openssl openssl-devel git bison
#> yum install -y centos-release-scl-rh 
#> yum install -y centos-release-scl
#> yum install -y devtoolset-10-gcc 
#> yum install -y devtoolset-10-gcc-c++

如果安裝比較慢,可以設定阿里雲的映象地址:CentOS 映象

上傳並解壓 MySQL 安裝包

將下載好的 MySQL 安裝包上傳至伺服器的/usr/local/目錄下並解壓,並將解壓後的 mysql 安裝目錄中的內容放入/usr/local/mysql目錄下

#> cd /usr/local/ 
#> tar -xf mysql-8.0.30-linux-glibc2.17-x86_64-minimal.tar.xz
#> mv mysql-8.0.30-linux-glibc2.17-x86_64-minimal/* mysql/

初始化 MySQL 資料庫

#> /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

初始化完畢,會列印如下紀錄檔資訊

2022-10-05T09:24:34.206466Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2022-10-05T09:24:34.206531Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.30) initializing of server in progress as process 1533
2022-10-05T09:24:34.222068Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-10-05T09:24:34.868013Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-10-05T09:24:35.827528Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.

修改 MySQL 設定引數

MySQL 的組態檔預設位置是/etc/my.cnf,關於組態檔的說明見:option-files

修改設定之前,一個比較好的習慣的是先備份設定

#> cd /etc
#> cp my.cnf my.cnf.backup

/etc/my.cnf內容替換為如下內容:

[client]
port=3306
socket=/tmp/mysql.sock
default-character-set=utf8
#user=root
#password=123
[mysqld]
server-id=1
#skip-grant-tables
default_authentication_plugin=mysql_native_password
port=3306
user=mysql
log_bin=mysql-bin
binlog_format=mixed
max_connections=200
socket=/tmp/mysql.sock
basedir=/usr/local/mysql
datadir=/data/mysql
pid-file=/data/mysql/mysql.pid
init-connect='SET NAMES utf8'
character-set-server=utf8
default-storage-engine=INNODB
log_error=/data/mysql/mysql-error.log
slow_query_log_file=/data/mysql/mysql-slow.log
[mysqldump]
quick
max_allowed_packet=16M

my.cnf 檔案的更多設定引數見:mysql-options

設定環境變數

設定環境變數並應用環境變數

#> echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile
#> source /etc/profile

設定啟動指令碼【可選】

#> cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

給啟動指令碼賦予可執行許可權

#> chmod +x /etc/init.d/mysqld

這樣就可以通過如下命令進行 MySQL 的啟動了

#> service mysqld restart

設定 MySQL 開機啟動【可選】

#> chkconfig --level 345 mysqld on

新建一個使用者並賦予許可權【可選】

安裝完畢後,root使用者預設沒有密碼,可以通過如下命令登入並修改root使用者密碼

#> mysql -u root -p

按回車,即可無密碼登入,可以通過如下命令建立使用者

建立一個使用者名稱為 dump 的使用者,密碼初始化為 1234(可根據自定義需求修改)

mysql> create user 'dump'@'%' identified by '1234';

賦予許可權,並設定可存取的 ip(可根據自定義需求修改)

mysql> grant all privileges on *.* to 'dump'@'%';
mysql> flush privileges;

開放 3306 埠

如果要遠端存取 MySQL,作業系統需要開啟 MySQL 的預設 3306 埠的存取許可權

#> firewall-cmd --zone=public --add-port=3306/tcp --permanent  
#> firewall-cmd --reload

接下來,可以通過 MySQL 使用者端連線驗證

推薦這一款免費開源的 MySQL 使用者端:HeidiSQL

MySQL 的解除安裝

如果要完全解除安裝 MySQL,可以通過如下的方式:

停止服務

#> service mysqld stop

然後執行

#> find / -name mysql

找到所有 mysql 相關的資料夾

/etc/selinux/targeted/active/modules/100/mysql
/usr/lib64/mysql
/usr/share/mysql
/usr/local/mysql
/usr/local/mysql/bin/mysql
/usr/local/mysql/include/mysql
/data/mysql
/data/mysql/mysql

然後執行rm -rf刪掉這些檔案即可。

當然你確保

#> find / -name mysql

出來的檔案沒有需要保留的檔案,也可以執行

#> rm -rf `find / -name mysql`

批次刪除。

參考檔案

Installing MySQL on Unix/Linux Using Generic Binaries