MySQL 8.0安裝以及初始化錯誤解決方法


 

官網下載

mysql官網下載鏈接:https://dev.mysql.com/downloads/mysql/

  1. Select Operating System 中選擇 “Red Hat Enterprise Linux / Oracle Linux”
  2. Select OS Version 中選擇 “Red Hat Enterprise Linux / Oracle Linux 7(x86, 64-bit)”
  3. 點擊Download(mysql-8.0.17-1.el7.x86_64.rpm-bundle.tar)

CentOS7環境下的具體安裝步驟

  1. 檢測本地是否有mysql已存在的包:
rpm -qa | grep mysql
  • 1
  1. 檢測本地是否有mariadb已存在的包:
rpm -qa | grep mariadb
  • 1

如果存在,則使用yum命令卸載:

rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
  • 1
  1. 創建一個文件夾,上傳jar包到/opt/software/mysql:
mkdir /opt/software/mysql
  • 1

上傳包有xftp等工具

  1. 解壓mysql jar包:
mkdir /opt/module/mysql
tar -xvf /opt/software/mysql-8.0.16-2.el7.x86_64.rpm-bundle.tar -C /opt/module/mysql
  • 1
  • 2
  1. 查看解壓后的文件:
ll /opt/module/mysql
  • 1

在這里插入圖片描述

  1. 利用rpm包安裝mysql:
    如官網所述:

In most cases, you need to install the mysql-community-server, mysql-community-client, mysql-community-libs, mysql-community-common, and mysql-community-libs-compat packages to get a functional, standard MySQL installation. To perform such a standard, basic installation, go to the folder that contains all those packages (and, preferably, no other RPM packages with similar names), and issue the following command:

依次安裝MySQL的組件

  • mysql-community-common
rpm -ivh mysql-community-common-8.0.16-2.el7.x86_64.rpm
  • 1
  • mysql-community-libs
rpm -ivh mysql-community-libs-8.0.16-2.el7.x86_64.rpm --force --nodeps
  • 1
  • mysql-community-libs-compat
rpm -ivh mysql-community-libs-compat-8.0.16-2.el7.x86_64.rpm
  • 1
  • mysql-community-client
rpm -ivh mysql-community-client-8.0.16-2.el7.x86_64.rpm --force --nodeps
  • 1
  • mysql-community-server
rpm -ivh mysql-community-server-8.0.16-2.el7.x86_64.rpm --force --nodeps
  • 1

安裝完成后 可以查看已經安裝的組件:

rpm -qa | grep mysql
  • 1
  1. 啟動mysql(初次啟動mysqld,會自動進行初始化工作)
systemctl start mysqld
  • 1

初始化后,會產生臨時密碼,查詢指令如下:

cat /var/log/mysqld.log | grep password
  • 1
  1. 登錄MySQL服務:
mysql -uroot -p
  • 1

輸入產生的臨時密碼

  1. 更改密碼

由於MySQL8.0 有密碼驗證組件,若希望設置簡單的密碼,需要修改服務驗證條件,可設置的驗證條件如官網所示:

# 密碼檢查等級,0/LOW、1/MEDIUM、2/STRONG
set global validate_password.policy=0;
# 密碼的最短長度
set global validate_password.length=6;
# 密碼至少要包含的小寫字母個數和大寫字母個數
set global validate_password.mixed_case_count=0;
# 設置密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your password';
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  1. 修改遠程登錄權限
USE mysql;
UPDATE mysql.user SET host = '%' WHERE user = 'root';
flush privileges;
SELECT host, user FROM user;
  • 1
  • 2
  • 3
  • 4

初始化MySQL發生錯誤的解決方法

使用初始化指令

mysqld --initialize --user=mysql
  • 1

若發生錯誤,可能由於 /etc/my.cnf 中datadir指定的文件夾未清除,本機中為 /var/lib/mysql,具體的datadir查看本機配置文件中指定的路徑。

vim /etc/my.cnf
  • 1

刪除datadir指定的文件夾

rm -rf /var/lib/mysql
  • 1

清楚 log-error 指定的日志文件中的內容, 本機中為 /var/log/mysqld.log,具體的datadir查看本機配置文件中指定的路徑。
注意,如果刪除 /var/log/mysqld.log 了該文件,需要重新創建該文件,並修改文件訪問權限

rm -f /var/log/mysqld.log 
touch /var/log/mysqld.log 
chmod 777 /var/log/mysqld.log 
  • 1
  • 2
  • 3

最后重新初始化即可!

忘記數據庫root密碼

主要通過無密碼啟動的方式啟動mysqld服務,然后進入數據庫清除原始密碼的加密值,然后再次重啟服務,進入數據庫設置密碼。

  1. 修改配置文件並重啟服務
vim /etc/my.cnf
# 在my.cnf中最后一行添加 skip-grant-tables
skip-grant-tables
# 重啟服務
systemctl restart mysqld.service
  • 1
  • 2
  • 3
  • 4
  • 5
  1. 進入數據庫清除原始root密碼的加密記錄
# password直接回車
mysql -u root -p

# 清除記錄
UPDATE mysql.user SET authentication_string='' WHERE user='root';

SELECT host, user, authentication_string, plugin FROM mysql.user;

 

  1. 修改配置文件,再次重啟服務,然后進入數據庫設置密碼
vim /etc/my.cnf
刪除 skip-grant-tables

# 重啟服務
systemctl restart mysqld.service

# password直接回車
mysql -u root -p

# 設置root密碼 我的host項已經修改為%了。如果沒有修改,則使用:ALTER user 'root'@'localhost' IDENTIFIED BY '123456'

grant system_user on *.* to 'root';
ALTER user 'root'@'%' IDENTIFIED BY '123456';
#  WITH mysql_native_password  這個可以根據自己需要的認證方式修改(caching_sha2_password、mysql_native_password  兩種)
ALTER user 'mysql.infoschema'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER user 'mysql.session'@'localhost' IDENTIFIED  WITH mysql_native_password BY '123456';
ALTER user 'mysql.sys'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';  

# 完成修改,重啟服務。
systemctl restart mysqld.service


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM