一、下載
鏈接:https://dev.mysql.com/downloads/mysql/
點擊 Download,如下圖:
沒有登陸,點擊 “No thanks,just start my downlaod.” 即可下載
二、安裝
2.1 將下載的mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz上傳到服務器,並解壓為tar
命令:xz -dev mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz
如下圖:
2.2 解壓mysql-8.0.23-linux-glibc2.12-x86_64.tar 到 目錄 /opt/module下面
解壓命令:tar -xvf mysql-8.0.23-linux-glibc2.12-x86_64.tar -C /opt/module/
重命名:mv mysql-8.0.23-linux-glibc2.12-x86_64 mysql8
如下圖,
2.3 進入mysql解壓后的目錄mysql8,並創建存放mysql日志的目錄
cd /opt/module/mysql8/
mkdir data
2.4 配置mysql環境變量
MYSQL_HOME=/opt/module/mysql8/bin
PATH=$PATH:$MYSQL_HOME
export MYSQL_HOME PATH
如下圖:
配置完成后重載:
source /etc/profile
2.5 創建mysql用戶組和mysql用戶
groupadd mysql
useradd -g mysql mysql
如下圖:
2.6 關聯myql用戶到mysql用戶組中
進入到mysql8所在目錄,此例中為/opt/module/
2.7 更改mysql安裝文件夾mysql的權限
[root@localhost module]# chmod -R 755 mysql8
2.8 安裝libaio依賴包
查詢是否安裝libaio依賴包
yum search libaio
如果沒安裝,可以用下面命令安裝:
yum install libaio
2.9 初始化mysql命令
mysqld --user=mysql --basedir=/opt/module/mysql8 --datadir=/opt/module/mysql8/data --initialize
紅色框內的是mysql數據庫登錄的臨時密碼,保存備用,每個人安裝生成的臨時密碼不一樣。
2.10 啟動mysql服務
sh /opt/module/mysql8/support-files/mysql.server start
上面啟動mysql服務命令是會報錯的,因為沒有修改mysql的配置文件,報錯內容大致如下:
2.11 修改Mysql配置文件
vim /opt/module/mysql8/support-files/mysql.server
修改以下屬性:
basedir=/opt/module/mysql8
datadir=/opt/module/mysql8/data
mysqld_pid_file_path=/opt/module/mysql8/data/mysqld_pid
如下圖所示:
接下來,
cp /opt/module/mysql8/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
將mysql服務加到系統服務中
chkconfig --add mysqld
開機自啟動
chkconfig mysqld on
如下圖:
2.12 修改my.cnf文件
這里下載的mysql8.0.23版本並沒有這個my.cnf文件,因此直接創建的。
vim /etc/my.cnf
[client] port=3306 socket=/tmp/mysql.sock [mysqld] basedir=/opt/module/mysql8 datadir=/opt/module/mysql8/data socket=/tmp/mysql.sock user=mysql port=3306 character_set_server=utf8 # symbolic-links=0 # bind-address=0.0.0.0 [mysqld_safe] log-error=/opt/module/mysql8/data/error.log pid-file=/opt/module/mysql8/data/mysqld.pid tmpdir=/tmp
my.cnf 如下圖:
然后,授權文件my.cnf(注意:這一步有待思考?)
[root@localhost etc]# chown mysql:mysql my.cnf
[root@localhost etc]# chown mysql my.cnf
[root@localhost etc]# chmod 755 my.cnf
再次啟動mysql服務成功,如下圖:
2.13 啟動服務
查看服務:service mysqld status
停止服務:service mysqld stop
啟動服務:service mysqld start
如下圖:
2.14 登錄mysql
mysql -uroot -p
此時出現錯誤:./mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
解決辦法:yum install libncurses* 完美解決!
再次登錄mysql(注意:這里的密碼是初始化生成的臨時密碼)
2.15 修改初始化用的臨時密碼
use mysql
報錯如下:
解決辦法:
修改初始密碼:alter user 'root'@'localhost' identified by 'root';
刷新:flush privileges;
至此,完成mysql8.0.23的安裝。
Navicat Premium 連接MYSQL8出現10060 “Unkown error”解決辦法:
首先檢查是否ping得通,其次再檢查如下原因:
原因一:由於mysql 沒有開啟對外訪問權限
原因二:由於防火牆沒有對外開放mysql的默認端口3306導致
原因三:由於阿里雲或者是騰訊雲的安全組規則沒有開放3306端口
參考:https://blog.csdn.net/weixin_43967679/article/details/107247901 此文章可解決;
如果還未解決,通過netstat查看3306的端口狀態是怎么樣的?是否綁定了本地回旋地址?
netstat -apn | grep 3306
如果MySQL的默認bind-address(監聽IP地址)為127.0.0.1,即只能為本機提供服務,禁止遠程連接。則只需要如下解決:
[mysqld] bind-address = 0.0.0.0
但這里不是,我這里的原因是防火牆沒有放行。
另外,由於是CentOS8版本,防火牆命令有差異,參考https://blog.csdn.net/RougeK/article/details/108676073即可。
關閉防火牆
關閉防火牆
#禁用,禁止開機啟動: systemctl disable firewalld
#停止運行: systemctl stop firewalld
yum安裝iptables
yum -y install iptables-services
啟動
systemctl start iptables
配置
vim /etc/sysconfig/iptables
由於我這里是測試環境,在虛擬機內使用,則直接關閉了防火牆,實際生產環境應該是放行3306端口。如下圖:
然后再重啟Linux,再進行Navicat Premium連接,提示一下錯誤:
又該如何解決?
原因分析:
其實是mysql8.0版更換了新的身份驗證是(caching_sha2_password)之前身份驗證是(mysql_native_password),Navicat,和SQLyog客戶端軟件其實是不支持新的身份驗證,也就是說新的身份驗證找不到(caching_sha2_password),既然知道了是這個問題,那么我們就把登錄密碼加密規則改回(mysql_native_password)即可。
參考:https://blog.csdn.net/weixin_40845165/article/details/84076691 即可:
第一步:登錄MySQL
mysql -uroot -p
第二步:修改加密規則
alter user 'root'@'%' identified by 'password' password expire never;
第三步:更新用戶密碼
alter user 'root'@'%' identified with mysql_native_password by 'password';
第四部:刷新權限
flush privileges;
第五步:重置密碼
alter user 'root'@'%' identified by 'root';
如下圖:
再次重新連接,成功!