環境說明:
系統版本:CentOS release 6.8 (Final)
MySQL版本:mysql-8.0.18
內存:63G
空間:8T
1 配置本地yum倉庫
這個只需要拷貝一個鏡像,然后掛載鏡像到某個目錄,最后將哪個目錄配置為yum倉庫的目錄即可
2 下載安裝包:wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
3 解壓安裝包:tar -zxf mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz -C /usr/local/mysql8
4 創建用戶,MySQL數據目錄和授權
mkdir /data/mysql8
useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql8
chown mysql:mysql /usr/local/mysql8/ -R
chown -R mysql:mysql /data/mysql8/
5 MySQL初始化
cd /usr/local/mysql8/
### 注意,生產環境中一般要設置忽略表名大小寫。這個參數必須在初始化數據庫時就要指定,否則在建庫完成之后,在修改配置文件會報錯
sudo bin/mysqld --initialize --lower-case-table-names=1 --user=mysql --basedir=/usr/local/mysql8 --datadir=/data/mysql8 # 注意初始化命令執行后會生成一個臨時root密碼
sudo bin/mysql_ssl_rsa_setup --datadir=/data/mysql8 #生成密鑰對
6 將MySQL服務添加到系統服務中
sudo cp support-files/mysql.server /etc/init.d/mysqld -r
vim /etc/init.d/mysqld #修改配置文件中,指定數據目錄和安裝目錄
datadir=/data/mysql8
basedir=/usr/local/mysql8
7 配置環境變量,使用命令
sudo vim /etc/profile #文件末尾追加以下內容
#set MySQL
export PATH=$PATH:/usr/local/mysql8/bin:/usr/local/mysql8/sbin
source /etc/profile
8 啟動MySQL服務,先刪除配置文件
sudo rm -rf /etc/my.cnf
如果在初始化時指定了忽略大小寫,則必須先在/etc/my.cnf配置文件中加上忽略大小寫的選項,MySQL才能啟動成功。如果沒有指定,則可以忽略這一步
echo "[mysqld]" >> /etc/my.cnf
echo "lower-case-table-names=1" >> /etc/my.cnf
echo "default_authentication_plugin=mysql_native_password" >> /etc/my.cnf
sudo /etc/init.d/mysqld start
#使用臨時密碼登陸數據庫
mysql -uroot -p臨時密碼
登陸之后立即修改數據庫的密碼:
mysql>ALTER user 'root'@'localhost' IDENTIFIED BY '新密碼';
刷新權限表:
mysql>flush privileges;
9 使用新修改的root密碼登錄MySQL,並給新用戶授權
https://www.cnblogs.com/xxsl/p/10791137.html
mysql -uroot -p新密碼
mysql>user mysql;
mysql>create user testuser@'%' identified by 'testuser';
mysql>grant all privileges on *.* to 'testuser'@'%' with grant option;
mysql>flush privileges;
10 配置MySQL配置文件 /etc/my.cnf
先停止服務:
/etc/init.d/mysqld stop
在修改配置文件:
vim /etc/my.cnf
[mysqld]
datadir=/data/mysql8
basedir=/usr/local/mysql8
user=mysql
socket=/data/mysql8/mysql.sock
## Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
## instructions in http://fedoraproject.org/wiki/Systemd
#[mysqld_safe]
log-error=/data/mysql8/mysql.log
pid-file=/data/mysql8/mysql.pid
11 重啟MySQL,使用root連接
報錯顯示找不到套接字文件,做一個軟連接
ln -s /data/mysql8/mysql.sock /tmp/mysql.sock
再次登陸成功
mysql -uroot -p新密碼
登陸,可以成功查看
12 設置MySQL服務為開機自啟動
chkconfig mysqld on
chkconfig --list |grep mysqld
13 使用客戶端navicat連接 總是報錯1251;
之前的版本中加密規則是mysql_native_password,而在mysql8之后,加密規則是caching_sha2_password,直接去連接Navicat會報錯1251
解決辦法:
在/etc/my.cnf中添加:default_authentication_plugin=mysql_native_password
然后在數據庫中修改testuser的認證方式:
https://blog.csdn.net/u011182575/article/details/80821418
重啟數據庫:service mysqld restart
報錯二:mysql8完成安裝后,優化參數忽略表名大小寫時報錯如下
具體優化步驟如下:
1 關閉MySQL服務 /etc/init.d/mysqld stop
2 修改配置文件,添加忽略表明大寫的參數
vim /etc/my.cnf
在[mysqld]下面配置如下參數
lower_case_table_names=1
3 重啟MySQL服務器:/etc/init.d/mysqld start
報錯如下:
4 具體解決辦法:查閱官方文檔后發現,如果要讓忽略表名大小寫的配置生效,則必須在數據庫初始化時指定此參數。
如果數據比較重要,則可以先進行數據庫全庫備份。
然后在刪除數據庫
重新初始化數據庫,執行忽略表名大小寫的參數值為1