溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql8.0的安裝和初始化使用教程

發(fā)布時間:2020-04-25 17:05:06 來源:億速云 閱讀:275 作者:三月 欄目:MySQL數(shù)據(jù)庫

下文內(nèi)容主要給大家?guī)?a title="mysql" target="_blank" href="http://www.kemok4.com/mysql/">mysql8.0的安裝和初始化使用教程,這里所講到的知識,與書籍略有不同,都是億速云專業(yè)技術人員在與用戶接觸過程中,總結(jié)出來的,具有一定的經(jīng)驗分享價值,希望給廣大讀者帶來幫助。

安裝

因為mysql官方和以往一樣,給出二進制包的方式,所以和以往安裝方式并沒有太大差別

首先官網(wǎng)下載二進制包,然后就可以正常解壓縮安裝了,我習慣了下面的方式

tar xf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
mv mysql-8.0.11-linux-glibc2.12-x86_64 /usr/local/
cd /usr/local/
ln -sf mysql-8.0.11-linux-glibc2.12-x86_64/ mysql80
mkdir -p /data/mysql/data80
groupadd mysql
useradd -g mysql -s /sbin/nologin mysql

其實二進制包也沒什么安裝概念,都是拿來就用

-注意:操作前要確保沒有其他mysql發(fā)行版干擾,特別是yum安裝的和rpm安裝,

#查看已安裝的rpm包中又沒有mysql和mariadb的安裝包
rpm -qa |grep -E 'mysql|mariadb'
mariadb-libs-5.5.44-2.el7.centos.x86_64
#刪除查找出來的rpm安裝包
rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
rpm -e --nodeps mysql.x86_64

mysql8.0的安裝和初始化使用教程

初始化使用

1.初始化

其實和mysql5.7沒什么差別

/usr/local/mysql80/bin/mysqld --defaults-file=/usr/local/mysql80/my.cnf --initialize

然后密碼也在之前一樣的地方

sed -n '/password/p' /data/mysql/data80/mysql.err
.....A temporary password is generated for root@localhost: %pqGI?ATQ4fg,

記得啟動前要把權限設置一下再啟動

chown -R mysql:mysql /data/mysql/data*
/usr/local/mysql80/support-files/mysql.server start

先用mysql8.0自帶的mysql客戶端和初始化密碼登進去,后面會說為什么要這么干

/usr/local/mysql80/bin/mysql -uroot -p'%pqGI?ATQ4fg' -S /tmp/mysql80.sock  -P3308

改密碼方式也是和5.7一樣的

mysql> alter user 'root'@'localhost' identified by '123';
mysql> set password for 'root'@'localhost'=password('123');
mysql> update mysql.user set authentication_string=password('123') where user='root' and Host = 'localhost';
mysql> flush privileges;

這個時候,你如果用默認的mysql客戶端登陸,可能就會有這個報錯

mysql -uroot -p123 -P3308 -S /tmp/mysql80.sock 
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/local/mysql/lib/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory

在mysql5.7環(huán)境里,雖然可以設置default_authentication_plugin來改變認證加密方式,但是一般人不會去設置.在mysql8.0下,默認變成了default_authentication_plugin=caching_sha2_password,包括你剛初始化的root用戶也是這個認證加密方式,這樣的結(jié)果是讓你除非用新的協(xié)議驅(qū)動,例如必須用8.0自帶的mysql客戶端才行,不然就連接不上數(shù)據(jù)庫.這樣就必然造成不兼容的情況,幸好,是可以改回舊的方式的.

vim my.cnf
[mysqld]
default_authentication_plugin=mysql_native_password

但是,這個參數(shù)只對新授權的用戶生效,舊的root密碼還是用舊的方式,類似下面這樣

#先用新客戶端登陸
/usr/local/mysql80/bin/mysql -uroot -p123 -P3308 -S /tmp/mysql80.sock
#查看各用戶情況
mysql> select Host,User,plugin,authentication_string from mysql.user;
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| Host      | User             | plugin                | authentication_string                                                  |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| localhost | mysql.infoschema | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              |
| localhost | mysql.session    | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              |
| localhost | mysql.sys        | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              |
| localhost | root             | caching_sha2_password | $A$005$.Sf}Q/Jh>3b6CjI5/vMJVDIQbS1dbFWaCVuiby7aX3ZY4lB6/M7Vvny5DUA |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
4 rows in set (0.00 sec)


可以看到plugin是不一樣的,密碼的加密方式也很明顯不一致造成差異.

然后我們再新建一個用戶,就可以看到是和以前一樣了

mysql> select Host,User,plugin,authentication_string from mysql.user;
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| Host      | User             | plugin                | authentication_string                                                  |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| %         | sroot            | mysql_native_password | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1                              |
| localhost | mysql.infoschema | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              |
| localhost | mysql.session    | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              |
| localhost | mysql.sys        | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              |
| localhost | root             | caching_sha2_password | $A$005$.Sf}Q/Jh>3b6CjI5/vMJVDIQbS1dbFWaCVuiby7aX3ZY4lB6/M7Vvny5DUA |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)

再次用默認的mysql客戶端登陸

mysql -usroot -p123123 -P3308 -S /tmp/mysql80.sock
mysql> \s
--------------
mysql  Ver 14.14 Distrib 5.7.20, for linux-glibc2.12 (x86_64) using  EditLine wrapper

Connection id:        17
Current database:    
Current user:        sroot@localhost
SSL:            Not in use
Current pager:        stdout
Using outfile:        ''
Using delimiter:    ;
Server version:        8.0.11 MySQL Community Server - GPL
Protocol version:    10
Connection:        Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:        /tmp/mysql80.sock
Uptime:            1 hour 25 min 18 sec

Threads: 2  Questions: 120  Slow queries: 0  Opens: 230  Flush tables: 2  Open tables: 203  Queries per second avg: 0.023
--------------

解決了一個兼容性問題了.


2.授權

上面說了創(chuàng)建一個用戶,在mysql8.0創(chuàng)建用戶和授權和之前不太一樣.其實也不能說不一樣,而是說更嚴格,需要先創(chuàng)建用戶和設置密碼,然后才能授權.

#先創(chuàng)建一個用戶
create user 'sroot'@'%' identified by '123123';
#再進行授權
grant all privileges on *.* to 'sroot'@'%' with grant option;

如果按以前的方式來做,那就會報語法錯誤

grant all privileges on *.* to 'sroot'@'%' identified by '123123';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by '123123'' at line 1

所以授權用戶要注意方法了


3.參數(shù)變更

因為版面有限,我沒有貼出my.cnf文件,而由于一些特性的原因,mysql8.0一些配置和之前的不太一樣,下面來列舉我發(fā)現(xiàn)的.

query_cache徹底消失了,在mysql5.7還需要手動設置為關閉,現(xiàn)在可以不用理會了,所以相應的兩個參數(shù)就可以注釋掉了

#query_cache_size=0
#query_cache_type=0

innodb_undo_logs不能再設置了,在mysql8.0里,undo獨立表空間是默認開啟的,而且值為2,也就是默認兩個,但是不能設innodb_undo_logs這個參數(shù)來指定回滾段大少,回滾段默認就是128

#innodb_undo_logs

其實暫時沒發(fā)現(xiàn),待發(fā)現(xiàn)再補上

然后也發(fā)現(xiàn)系統(tǒng)表現(xiàn)在都是innodb引擎,其實之前也在特性里看到了.

對于以上關于mysql8.0的安裝和初始化使用教程,如果大家還有更多需要了解的可以持續(xù)關注我們億速云的行業(yè)推新,如需獲取專業(yè)解答,可在官網(wǎng)聯(lián)系售前售后的,希望該文章可給大家?guī)硪欢ǖ闹R更新。

 

 







向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI