1.進官網,選擇適合自己版本的linux下的MYSQL版本。
下載地址:https://dev.mysql.com/downloads/mysql/
選擇系統版本及運行版本位數。
選擇需要下載的安裝包
等待下載完成~~~~~~~~~
快捷下載地址:https://dev.mysql.com/downloads/file/?id=499500
可能會需要Oracle登錄:
Oracle帳號:2696671285@qq.com
Oracle密碼:Oracle123
2.將下載好的mysql-8.0.22-el7-x86_64.tar.gz 上傳至linux系統中進行解壓 。
(1)將這個文件上傳至/home/mysql/目錄下,首先查看 /home/mysql/目錄下的文件。以確保系統中有這個文件。
(2)解壓mysql-8.0.22-el7-x86_64.tar.gz,生成mysql-8.0.22-el7-x86_64解壓目錄
命令:tar xf mysql-8.0.22-el7-x86_64.tar.gz
3.進行mysql安裝
(1)將mysql-8.0.15-el7-x86_64 安裝到 /usr/local/mysql 下
命令:mv mysql-8.0.22-el7-x86_64/* /usr/local/mysql
(2)為系統添加mysql 組和用戶
groupadd mysql
useradd -r -g mysql mysql
(3)進入 /usr/local/mysql 目錄下,修改相關權限
cd /usr/local/mysql //進入/usr/local/mysql 目錄
chown -R mysql:mysql ./ //修改當前目錄為mysql用戶
(4)mysql初始化操作,記錄下臨時密碼,之后第一次登錄的時候會用到
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data //運行完成會生成一個暫時的密碼。
結果如下
(5)查看初始化過程中有沒有自動生成my.cnf 文件.
cd /etc/ //進入/etc/目錄下
ls | grep my.cnf //查看是否有my.cnf 文件。有則會產生結果。

(6) 初始化生成my.cnf 文件,則跳至第八步,修改配置文件,未生成執行第七步。
(7) 如果初始化過程中沒有生成my.cnf , 新建一個my-defalut.cnf文件,將其復制到/etc/my.cnf
touch my-defalut.cnf //新建一個文件
chmod 755 my-defalut.cnf // 賦予權限
cp my-defalut.cnf /etc/my.cnf // 將文件復制到/etc/ 目錄下,並更名為my.cnf 文件名。
(8)my.cnf 的信息如下
[root@mysql etc]# cat my.cnf
[mysqld]
#datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
socket=/tmp/mysql.sock
pid-file=/usr/local/mysql/mysql.pid //注意了,小細節,這里的mysql.pid ,mysql是linux的主機名。一般每個人主機名都是不一樣的。
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
#skip-grant-tables
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
!includedir /etc/my.cnf.d
(9)為mysql配置環境變量
vim /etc/profile // 打開profile文件。
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/lib:$MYSQL_HOME/bin
立即生效:source /etc/profile
(10) 設置為開機自啟動項。
依次執行一下代碼。
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql //添加可執行權限。
chkconfig --add mysql // 注冊啟動服務
附加:
讓MySQL數據庫隨系統的開機而啟動:chkconfig mysqld on
關閉MySQL的開機自啟動:chkconfig mysqld off
輸入chkconfig --list //查看是否添加成功,以下顯示表示添加成功。
(11)開啟服務器,登錄進入mysql
service mysql start //開啟服務器
mysql -uroot -p //登錄進入mysql,然后提示輸入密碼
輸入初始化過程中生成的臨時密碼,然后回車就行。進入一下頁面。
到此,說明已經安裝成功了。
(12)進入mysql后,修改密碼。不然你什么也做不了
alter user 'root'@'mysql' identified by 'your_password'; >>>本人的主機名在安裝之前改為了mysql,這里需要注意一下
然后 exit; 退出,重新進入,進行測試。
show databases;
到此,關於安裝mysql 8.0.22版本的全部過程就已經結束了!
1.設置遠程登錄
mysql -u root -p
Enter password: 輸入密碼
mysql> use mysql; >>>進入mysql數據庫
mysql> select host, user, authentication_string, plugin from user; >>>查看主機,用戶,密碼及認證插件類型
mysql> update user set host='%' where user='root'; >>>更新root用戶為所有主機
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密碼'; >>>修改用戶的認證插件類型及密碼
mysql> grant all privileges on *.* to 'root'@'%' with grant option; >>>給所有用戶賦予root用戶權限
2.創建新用戶:
mysql> create user '用戶名'@'主機' identified by '密碼'; >>>創建用戶
mysql> grant all privileges on *.* to 'root'@'%' ; >>>給所有用戶賦予root用戶權限
3.修改用戶密碼:
mysql> update user set authentication_string='' where user='用戶名'; >>>更新用戶密碼為空
mysql> ALTER USER '用戶名'@'主機' IDENTIFIED WITH mysql_native_password BY '新密碼'; >>>修改用戶認證插件類型及新密碼
4.單獨修改密碼:
MySql 從8.0開始修改密碼有了變化,在user表加了字段authentication_string,修改密碼前先檢查authentication_string是否為空。
mysql 5.7.9以后廢棄了password字段和password()函數;authentication_string:字段表示用戶密碼,而authentication_string字段下只能是mysql加密后的41位字符串密碼。所以需要用一下方式來修改root密碼:
格式:ALTER user '用戶名'@'主機' IDENTIFIED BY 'newpassword';
mysql> use mysql;
mysql> select host, user, authentication_string, plugin from user;
mysql> update user set authentication_string='' where user='用戶名'; >>>先更新用戶密碼為空
mysql> ALTER user 'root'@'%' IDENTIFIED BY '123456'; >>>再設置密碼
mysql> flush privileges; >>>刷新權限
5.MySQL啟動相關命令:
service mysql start
service mysql stop
service mysql restart
6.修改認證插件類型:
編輯配置文件/etc/my.cnf,在[mysqld]后面增加認證插件類型,如下:
vim /etc/my.cnf
[mysqld]
default-authentication-plugin=mysql_native_password
保存,退出!
重啟:service mysql restart
重啟mysql配置才會生效!
7.修改是否可以信任存儲函數創建者
簡單介紹一下,當二進制日志啟用后,這個變量就會啟用。它控制是否可以信任存儲函數創建者,不會創建寫入二進制日志引起不安全事件的存儲函數。如果設置為0(默認值),用戶不得創建或修改存儲函數,除非它們具有除CREATE ROUTINE或ALTER ROUTINE特權之外的SUPER權限。 設置為0還強制使用DETERMINISTIC特性或READS SQL DATA或NO SQL特性聲明函數的限制。 如果變量設置為1,MySQL不會對創建存儲函數實施這些限制。 此變量也適用於觸發器的創建。
那么為什么MySQL有這樣的限制呢? 因為二進制日志的一個重要功能是用於主從復制,而存儲函數有可能導致主從的數據不一致。所以當開啟二進制日志后,參數log_bin_trust_function_creators就會生效,限制存儲函數的創建、修改、調用。
如果數據庫沒有使用主從復制,那么就可以將參數log_bin_trust_function_creators設置為1。
mysql> set global log_bin_trust_function_creators=1;
這個動態設置的方式會在服務重啟后失效,所以我們還必須在my.cnf中設置,加上log_bin_trust_function_creators=1,這樣就會永久生效。
編輯配置文件/etc/my.cnf,在[mysqld]后面增加是否信任配置,如下:
vim /etc/my.cnf
[mysqld]
log_bin_trust_function_creators=1
保存,退出!
重啟:service mysql restart
重啟mysql配置才會生效!
8.設置mysql免密登錄,修改密碼
編輯配置文件/etc/my.cnf,在[mysqld]后面增加免密登錄配置,如下:
vim /etc/my.cnf
[mysqld]
skip-grant-tables
保存,退出!
重啟:service mysql restart
重啟mysql配置才會生效!
再次登錄時,密碼為空,可直接登錄。
[root@mysql etc]# mysql -u root -p
Enter password: 直接回車登錄
出現問題1
1.安裝Mysql8.0后,登錄mysql,修改密碼的時候使用alter user 命令發生報錯,提示使用ALTER USER修改密碼,(我已經用這個命令,就很奇怪):
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
折騰了一會~~~~~
用set 命令直接賦值,就可以改了
解決問題
1、需要執行如下語句修改密碼:
set password='your password';
2、如果密碼符合Mysql要求,會修改成功。如果出現以下錯誤信息:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
執行如下兩條語句:
set global validate_password.policy=0;
set global validate_password.length=1;
然后再次執行步驟1中的語句即可。
出現問題2
解決辦法:
需要授權遠程登錄主機,上面有做👆
出現問題3
解決辦法:
修改遠程用戶的認證插件類型
use mysql;
select user,authentication_string,host from user; >>查看主機,用戶,密碼及認證插件類型
ALTER USER '用戶'@'主機' IDENTIFIED WITH mysql_native_password BY '密碼'; >>更新用戶的認證插件類型及密碼
flush privileges; >>刷新權限
出現問題4
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xxxxx';
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%'
解決辦法:
[root@mysql ~]# vim /etc/my.cnf
[mysqld]
skip-grant-tables >>>跳過密碼登錄
[root@mysql ~]# service mysql restart
[root@mysql ~]# mysql -u root -p >>>無密碼,回車
mysql> use mysql;
mysql> select host, user, authentication_string, plugin from user;
mysql> update user set authentication_string='' where user='root';
mysql> flush privileges;
mysql> quit
Bye
[root@mysql ~]# vim /etc/my.cnf
[mysqld]
skip-grant-tables >>>刪除,或者禁掉
[root@mysql ~]# service mysql restart
[root@mysql ~]# mysql -u root -p >>>密碼為空,回車登錄
mysql> use mysql;
mysql> select host, user, authentication_string, plugin from user;
mysql> ALTER user 'root'@'%' IDENTIFIED BY 'root123';
mysql> flush privileges;
mysql> quit
Bye
[root@mysql ~]# mysql -u root -p
Enter password: root123
出現問題5
問題描述:
mysql啟動的時候報錯,如下:
問題分析思路:
1.權限問題
給所安裝的mysql8目錄授權mysql8用戶
chown -R mysql8:mysql8 /usr/local/mysql8
2.防火牆問題
vim /etc/selinux/config
SELINUX=disabled
解決辦法:
修改/etc/init.d/mysql8(我這里裝了兩個mysql,所以取名不一樣),如下:
在mysqld_safe,找到start模塊,添加--user=root到mysqld_safe 即可
啟動成功!
ps aux | grep mysql >>>查看mysql進程已經在運行