CentOS7系統下在線安裝MySQL數據庫


 

 在CentOS中默認安裝有MariaDB,這個是MySQL的分支,但為了需要,還是要在系統中安裝MySQL,而且安裝完成之后可以直接覆蓋掉MariaDB。

1 下載並安裝MySQL官方的 Yum Repository

 

[root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

  使用上面的命令就直接下載了安裝用的Yum Repository,大概25KB的樣子,然后就可以直接yum安裝了。

[root@localhost ~]# yum -y install mysql80-community-release-el7-3.noarch.rpm



備注:

這里可能會出現以下錯誤:

1.

已加載插件:fastestmirror, langpacks
無法打開 mysql57-community-release-el7-7.noarch.rpm ,跳過。
無須任何處理

2.

已加載插件:fastestmirror, langpacks
base                                                | 3.6 kB     00:00     
extras                                              | 3.4 kB     00:00     
updates                                             | 3.4 kB     00:00     
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
沒有可用軟件包 mysql-community-server。
錯誤:無須任何處理

原因:沒有更新 wget命令包

解決辦法:

1. yum -y install wget

2. wget http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

3. yum localinstall -y mysql80-community-release-el7-3.noarch.rpm

4. yum install -y mysql-community-server

  之后就開始安裝MySQL服務器。

[root@localhost ~]# yum -y install mysql-community-server

  這步可能會花些時間,安裝完成后就會覆蓋掉之前的mariadb。

 

至此MySQL就安裝完成了,然后是對MySQL的一些設置。

2 MySQL數據庫設置

  首先啟動MySQL

[root@localhost ~]# systemctl start  mysqld.service

  查看MySQL運行狀態,運行狀態如圖:

[root@localhost ~]# systemctl status mysqld.service

  此時MySQL已經開始正常運行,不過要想進入MySQL還得先找出此時root用戶的密碼,通過如下命令可以在日志文件中找出密碼:

[root@localhost ~]# grep "password" /var/log/mysqld.log

 

  如下命令進入數據庫:

[root@localhost ~]# mysql -uroot -p

備注:

若登錄不了,則進行以下配置,跳過登錄驗證

1.重置密碼的第一步就是跳過MySQL的密碼認證過程,方法如下:

vim /etc/my.cnf(注:windows下修改的是my.ini)
 
           

2.在文檔內搜索mysqld定位到[mysqld]文本段:

 
           

/mysqld(在vim編輯狀態下直接輸入該命令可搜索文本內容)

 
           

3.在[mysqld]后面任意一行添加“skip-grant-tables”用來跳過密碼驗證的過程,如下圖所示:

保存文檔並退出

 

按Esc,Shift+q退出編輯,輸入!wq 保存退出,

(當遇到無法退出的情況時:                         

解決方案:
1..保存的時候用:w !sudo tee %
2. 輸入密碼即可
3.嘗試出入以下命令wq!;q;q! ;x,x!退出            

 

輸入初始密碼,此時不能做任何事情,因為MySQL默認必須修改密碼之后才能操作數據庫:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

備注:

在安裝Mysql過程中重置密碼時報了這個錯誤, 原因是沒有設置密碼時需要在/etc/my.cnf中添加這段時才能操作mysql

#跳過密碼驗證

skip-grant-tables

但是添加完這句后操作mysql又報了這個錯誤, 這就成了一個死循環, 最后發現了解決辦法, 

先執行  

flush privileges;

再執行sql語句, 成功了

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密碼';

小貼士:
mysql> select user,host from user;
 
           

注意我的root,host是'%'

你可能執行的是:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密碼';


改成:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密碼';

 

備注:

1.登陸成功后輸入命令的時候,發現總是提示:

You must reset your password using ALTER USER statement before executing this statement. 

翻譯過來就是:在執行此語句之前,必須使用 ALTER USER 語句重置密碼。因第一次安裝,給的是隨機密碼,登陸成功后需要第一時間改成自己的密碼。
第一次安裝登陸后只能使用 ALTER USER 修改密碼
MySQL 5.7 在初始安裝后(CentOS7 操作系統)會生成隨機初始密碼,並在 /var/log/mysqld.log 中有記錄,可以通過 cat 命令查看,找 password 關鍵字

修改密碼方式

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password'; //記得修改自己的賬戶 flush privileges; //修改成功后刷新權限 quit; //最后退出 

普及一下 mysql 修改密碼的兩種方法:ALTER USER 和SET PASSWORD

ALTER USER

mysql 推薦使用 ALTER USER

基本使用:

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

修改當前登陸用戶密碼

ALTER USER USER() IDENTIFIED BY '123456';

設置密碼過期

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE;

設置密碼永不過期

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;

設置密碼按照默認過期的時間

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE DEFAULT; 

設置密碼指定的過期時間

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE INTERVAL 90 DAY;

SET PASSWORD

mysql 默認加密方法

SET PASSWORD FOR 'root'@'localhost'  = '123456'

mysql 中的 password 函數加密方法

update user set authentication_string = password('123456'), password_expired = 'N', password_last_changed = now() where user = 'root';

 

這里有個問題,新密碼設置的時候如果設置的過於簡單會報錯:

  原因是因為MySQL有密碼設置的規范,具體是與validate_password_policy的值有關:

 

  MySQL完整的初始密碼規則可以通過如下命令查看:

復制代碼
復制代碼
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_check_user_name    | OFF   |
| validate_password_dictionary_file    |       |
| validate_password_length             | 4     |
| validate_password_mixed_case_count   | 1     |
| validate_password_number_count       | 1     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 1     |
+--------------------------------------+-------+
7 rows in set (0.01 sec)
復制代碼
復制代碼

  密碼的長度是由validate_password_length決定的,而validate_password_length的計算公式是:

validate_password_length = validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)

 

我的是已經修改過的,初始情況下第一個的值是ON,validate_password_length是8。可以通過如下命令修改:

mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;

  設置之后就是我上面查出來的那幾個值了,此時密碼就可以設置的很簡單,例如1234之類的。到此數據庫的密碼設置就完成了。

  但此時還有一個問題,就是因為安裝了Yum Repository,以后每次yum操作都會自動更新,需要把這個卸載掉:

[root@localhost ~]# yum -y remove mysql80-community-release-el7-3.noarch

 備注:

1.解決方案
1.1 對於5.7版本的mysql,即可解決問題
set global validate_password_policy=0;
set global validate_password_length=1;
 
1.2對於8.0版本的解決方案 
如果服務器安裝的是8.0版本的mysql,使用5.7的解決方案,則會出現以下報錯信息

ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'

ERROR 1193 (HY000): Unknown system variable 'validate_password_length'

原因:8.0版本的mysql這兩個變量是不存在的,已經替換成其他的變量名了

查看8.0版本的變量名

SHOW VARIABLES LIKE 'validate_password%';

所以使用以下命令進行配置修改

set global validate_password.policy=0;
set global validate_password.length=1;

參考原貼申明:https://www.cnblogs.com/nicknailo/articles/8563737.html


免責聲明!

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



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