記錄Linux安裝MySQL8.0.22(基於CentOS 7 X86)
一、安裝包下載
下載地址:https://downloads.mysql.com/archives/community/
二、解除安裝衝突包、安裝依賴包
1、檢視系統是否安裝mariadb(linux系統預設有這個)
rpm -qa | grep mariadb
2、如果查詢出來有有安裝(類似如下圖資訊),則將其解除安裝
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
3、安裝MySQL依賴包
yum install libaio
三、上傳安裝包
將下載的壓縮包上傳到伺服器指定目錄
這裡使用FileZilla上傳
四、建立mysql使用者、建立mysql安裝目錄並授權給MySQL。
1、建立mysql使用者
useradd mysql;
2、給mysql設定密碼
passwd mysql;
3、建立mysql安裝目錄
mkdir /usr/local/mysql;
4、將mysql目錄的許可權授給mysql使用者
chown -R mysql:mysql /usr/local/mysql;
5、建立mysql資料存放目錄
mkdir /usr/local/mysql/mysqldb;
6、設定安裝目錄和存放目錄許可權
chmod -R 777 /usr/local/mysql;
chmod -R 777 /usr/local/mysql/mysqldb
五、解壓安裝包並將解壓內容移到安裝目錄
1、進入安裝包目錄
cd /root/tmp;
2、解壓安裝包
tar -zxvf mysql-8.0.22-el7-x86_64.tar.gz;
3、將解壓內內容移動到安裝目錄
mv mysql-8.0.22-el7-x86_64/* /usr/local/mysql;
4、刪除mysql-8.0.22-el7-x86_64目錄
rm -rf mysql-8.0.22-el7-x86_64;
六、建立mysql配置檔案
1、建立my.cnf檔案
vim /etc/my.cnf;
配置檔案內容如下(配置檔案中忽略大小寫的配置如果有需要必須在初始化前配置<官方文件中有提示,這個配置只能初始化時設定,後期修改配置檔案無效>)
[mysqld]
# 跳過許可權表校驗
# skip-grant-tables
skip-name-resolve
# 設定3306埠
port = 3306
# 設定mysql的安裝目錄
basedir=/usr/local/mysql
# 設定mysql資料庫的資料的存放目錄
datadir=/usr/local/mysql/mysqldb
# pid-file=/usr/local/mysql/mysqldb/mysql.pid
log-error=/usr/local/mysql/mysqldb/mysql.log
# 允許最大連線數
max_connections=2000
# 服務端使用的字符集預設為8位元編碼的latin1字符集
character_set_server=utf8
init_connect='SET NAMES utf8'
collation_server=utf8_bin
# 建立新表時將使用的預設儲存引擎
default-storage-engine=INNODB
# 忽略大小寫
lower_case_table_names=1
# 接受的資料包大小
max_allowed_packet=2000M
tmp_table_size=500M
max_heap_table_size=500M
# 拼接字串最大位元組數
group_concat_max_len=4294967295
# 開啟二進位制日誌
server-id=11
# 開啟二進位制日誌,日誌檔名稱是 mysql-bin
log-bin=mysql-bin
# 日誌保留天數
# expire-logs-days=7
binlog_expire_logs_seconds=7
# 匯入匯出路徑限制
secure_file_priv=''
log-bin-trust-function-creators=1
# default-authentication-plugin = mysql_native_pssword
# 登入超時處理
wait_timeout=10000
interactive_timeout=10000
[mysql]
# 設定mysql客戶端預設字符集
default-character-set=utf8
[client]
# 設定mysql客戶端連線服務端時預設使用的埠
port=3306
# 建立新表時將使用的預設資料集
default-character-set=utf8
七、初始化資料庫
1、進入MySQL安裝目錄的bin目錄下
cd /usr/local/mysql/bin;
2、初始化資料庫並記住隨機密碼(隨機密碼為最後一行root@localhost:後面的字元、這裡我沒有彈出隨機密碼)
./mysqld --initialize --console;
3、如果初始化後沒彈出隨機密碼可進入my.cnf中設定跳過許可權表校驗
八、啟動MYSQL服務並初始化設定
1、進入support-files目錄
cd /usr/local/mysql/support-files;
2、啟動服務
./mysql.server start;
錯誤提示:
①、啟動MySQL服務時報 my_print_defaults:。
可以去my.cnf配置檔案中檢查安裝目錄和資料目錄配置是否正確(不正確修改正確)
②、報without updating PID file錯誤
問題是因為解壓mysql的tar包檔案,許可權不夠。
重新給安裝目錄和資料目錄授權一次即可。
chmod -R 777 /usr/local/mysql;
chmod -R 777 /usr/local//mysql/mysqldb;
3、將MySQL加入系統程序
cp mysql.server /etc/init.d/mysqld
4、重啟服務
service mysqld restart
5、建立一個軟連線到 /usr/bin
ln -s /usr/local/mysql/bin/mysql /usr/bin;
6、本地登入mysql修改root密碼(初始化化密碼沒拿到的在my.cnf中設定跳過許可權驗證,輸入密碼時直接回車可進入資料庫)
mysql -uroot -p;
7、修改root賬號密碼
mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密碼';
提示:
這裡提示異常的話,可能是設定跳過許可權表校驗引起的,可以先重新整理許可權再執行一次修改密碼
mysql>flush privileges;
8、建立使用者
mysql>create user 'admin123'@'%' identified by "asd1ad3";
8、賦予使用者許可權
mysql>grant all privileges on *.* to 'admin123'@'%';
9、設定允許遠端登入(建議root賬號不設定遠端登入、建立其他賬號設定遠端登入)
mysql>use mysql;
mysql>update user set user.Host='%' where user.User='admin123';
mysql>flush privileges;
10、退出mysql
mysql>quit;
11、進入my.cnf配置檔案將許可權驗證開啟(註釋掉)
vi /etc/my.cnf
12、重啟MySQL服務
service mysqld restart
九、開放資料庫埠3306
1、開放3306埠
firewall-cmd --zone=public --add-port=3306/tcp --permanent
2、重啟防火牆以使配置生效
systemctl restart firewalld
3、檢查3306埠是否開放
firewall-cmd --query-port=3306/tcp
提示:如果是租的阿里雲伺服器、需要在阿里雲伺服器管理控制頁面新增防火牆開放埠,否則遠端登入也無效。