Centos 7 安裝Mysql 8.0.22數據庫、遠程設置及修改用戶密碼詳情,以及遇到的一些問題統計


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進程已經在運行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM