在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