您好,登錄后才能下訂單哦!
了解Linux如何安裝mysql 8.0?這個(gè)問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過(guò)這個(gè)問題能讓你收獲頗深。下面是小編給大家?guī)?lái)的參考內(nèi)容,讓我們一起來(lái)看看吧!
經(jīng)過(guò)一番努力下載mysql文件,我們可以開始Mysql8.0的安裝了。
解壓文件
// 解壓文件生成兩個(gè)xz格式的壓縮文件 $ tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar mysql-router-8.0.13-linux-glibc2.12-x86_64.tar.xz mysql-test-8.0.13-linux-glibc2.12-x86_64.tar.xz // 我們需要先刪掉/移除原有文件,才可以繼續(xù)解壓,因?yàn)榻鈮撼鰜?lái)的.tar文件和.tar.xz文件重名 mv mysql-8.0.13-linux-glibc2.12-x86_64.tar ../ xz -d mysql-router-8.0.13-linux-glibc2.12-x86_64.tar.xz tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar // 為了方便查找,改個(gè)名字 mv mysql-8.0.13-linux-glibc2.12-x86_64.tar mysql8
環(huán)境配置
我們需要專門的mysql進(jìn)程啟動(dòng)用戶和權(quán)限管理:
// 創(chuàng)建mysql系統(tǒng)用戶和用戶組 useradd -r mysql // 給予安裝目錄mysql權(quán)限 chown mysql:mysql -R mysql8
配置自己的mysql配置文件,因?yàn)槲矣卸鄠€(gè)Mysql庫(kù),我手動(dòng)指定很多參數(shù):
[client] socket=/home/work/lnmp/mysql8/tmp/mysql.sock default-character-set=utf8 [mysql] basedir=/home/work/lnmp/mysql8/ datadir=/home/work/lnmp/mysql8/data/ socket=/home/work/lnmp/mysql8/tmp/mysql.sock port=3306 user=mysql # 指定日志時(shí)間為系統(tǒng)時(shí)間 log_timestamps=SYSTEM log-error=/home/work/lnmp/mysql8/log/mysql.err # 指定字符集為utf8,因?yàn)閙ysql8.0中的默認(rèn)字符集為utfmb4,會(huì)和其他程序引起兼容性問題 default-character-set=utf8 [mysqld] basedir=/home/work/lnmp/mysql8/ datadir=/home/work/lnmp/mysql8/data/ socket=/home/work/lnmp/mysql8/tmp/mysql.sock port=3306 user=mysql log_timestamps=SYSTEM collation-server = utf8_unicode_ci character-set-server = utf8 # 指定默認(rèn)認(rèn)證的加密方式,mysql8.0中默認(rèn)方式為caching_sha2_password,引起老版本兼容性問題 default_authentication_plugin= mysql_native_password [mysqld_safe] log-error=/home/work/lnmp/mysql8/log/mysqld_safe.err pid-file=/home/work/lnmp/mysql8/tmp/mysqld.pid socket=/home/work/lnmp/mysql8/tmp/mysql.sock [mysql.server] basedir=/home/work/lnmp/mysql8 socket=/home/work/lnmp/mysql8/tmp/mysql.sock [mysqladmin] socket=/home/work/lnmp/mysql8/tmp/mysql.sock
這個(gè)里面我指定了錯(cuò)誤日志的路徑,在接下來(lái)的操作中,如果出現(xiàn)錯(cuò)誤,除了查看終端顯示的錯(cuò)誤,還要記得去錯(cuò)誤日志里查看詳細(xì)的信息。
因?yàn)槲抑付艘恍┪募?,所以需要提前?chuàng)建:
mkdir log touch log/mysql.err touch log/mysqld_safe.err mkdir tmp chown mysql:mysql -R ../*
數(shù)據(jù)庫(kù)初始化
如果我們不初始化,直接使用bin/mysqld_safe啟動(dòng)會(huì)報(bào)錯(cuò),因?yàn)槲覀冃枰跏蓟痬ysql環(huán)境,此時(shí)參考文章:
$ bin/mysqld --initialize --user=mysql --basedir=/home/work/lnmp/mysql8/ --datadir=/home/work/lnmp/mysql8/data/ 2018-12-13T06:15:03.159123Z 0 [System] [MY-013169] [Server] /home/work/lnmp/mysql8/bin/mysqld (mysqld 8.0.13) initializing of server in progress as process 1190 2018-12-13T06:15:05.255817Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: !/7oy-u%(XfZ 2018-12-13T06:15:06.135143Z 0 [System] [MY-013170] [Server] /home/work/lnmp/mysql8/bin/mysqld (mysqld 8.0.13) initializing of server has completed
提示中提示我們已經(jīng)創(chuàng)建了root的用戶和一個(gè)臨時(shí)密碼,同時(shí)初始化成功。
啟動(dòng)數(shù)據(jù)庫(kù)
這時(shí)根據(jù)官方文檔我們使用mysqld_safe 命令來(lái)啟動(dòng):
$ bin/mysqld_safe 2018-12-13T06:16:58.604154Z mysqld_safe Logging to '/home/work/lnmp/mysql8/log/mysql.err'. 2018-12-13T06:16:58.629249Z mysqld_safe Starting mysqld daemon with databases from /home/work/lnmp/mysql8/data
打開數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)進(jìn)程已經(jīng)啟動(dòng),我們可以在新終端正常使用mysql數(shù)據(jù)庫(kù)了:
$ ps aux | grep mysql root 2141 0.0 0.0 815844 5328 pts/0 S+ 14:16 0:00 /bin/sh bin/mysqld_safe mysql 2319 1.0 0.5 1997492 374448 pts/0 Sl+ 14:16 0:00 /home/work/lnmp/mysql8/bin/mysqld --basedir=/home/work/lnmp/mysql8/ --datadir=/home/work/lnmp/mysql8/data --plugin-dir=/home/work/lnmp/mysql8//lib/plugin --user=mysql --log-error=/home/work/lnmp/mysql8/log/mysql.err --pid-file=/home/work/lnmp/mysql8/tmp/mysqld.pid --socket=/home/work/lnmp/mysql8/tmp/mysql.sock --port=3306 work 25258 0.0 0.0 105356 824 pts/1 S+ 14:18 0:00 grep mysql
但是直接使用mysql命令報(bào)錯(cuò):
$ bin/mysql -uroot ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
根據(jù)mysql.sock的作用的說(shuō)明,我們指定mysql.sock路徑即可:
bin/mysql -S /home/work/lnmp/mysql8/tmp/mysql.sock -h localhost -uroot -p Enter password:
修改初始密碼
我們打開數(shù)據(jù)庫(kù)后使用任何命令會(huì)提示我們修改初始的臨時(shí)密碼:
mysql> show databases; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
修改密碼:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; Query OK, 0 rows affected (0.05 sec)
重新連接,新密碼生效。
鏈接全局命令
此時(shí),我們調(diào)用mysql只能用路徑/home/work/lnmp/mysql8/bin/mysql或相對(duì)路徑,需要鏈接為全局命令:
$ ln -s /home/work/lnmp/mysql8/bin/mysql /usr/bin/ $ ln -s /home/work/lnmp/mysql8/bin/mysql_safe /usr/bin/
指定socket文件
在8.0這個(gè)版本,我嘗試了很多方法試圖在my.cnf中修改mysql命令查詢的默認(rèn)socket路徑,依然不成功,所以只好在默認(rèn)路徑里面鏈接socket文件了:
ln -s /home/work/lnmp/mysql8/tmp/mysql.sock /tmp/
然后我們?cè)僬{(diào)用mysql命令就不會(huì)報(bào)錯(cuò)了。
重啟數(shù)據(jù)庫(kù)
在過(guò)程中我們調(diào)試參數(shù)可能需要重啟數(shù)據(jù)庫(kù):
// 殺死進(jìn)程,相當(dāng)于停止 cat tmp/mysqld.pid | xargs kill // 正常啟動(dòng)mysql bin/mysqld_safe --defaults-file=/home/work/lnmp/mysql8/my.cnf
新增用戶&賦予權(quán)限
在mysql8里,我創(chuàng)建用戶并賦值,結(jié)果報(bào)錯(cuò):
mysql > grant all privileges on *.* to root@localhost indentified by '123456'; 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 'indentified by '123456'' at line 1
根據(jù)網(wǎng)上資料,是由于Mysql8將創(chuàng)建賬戶和賦予權(quán)限的操作分開了:
// 創(chuàng)建賬戶 create user '用戶名'@'訪問主機(jī)' identified by '密碼'; // 賦予權(quán)限(修改權(quán)限時(shí)在后面加with grant option) grant 權(quán)限列表 on 數(shù)據(jù)庫(kù) to '用戶名'@'訪問主機(jī)' ; // 刷新權(quán)限 flush privileges;
感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)Linux如何安裝mysql 8.0大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。