CentOS7的yum源中是沒有mysql的,所以Centos7安裝MySQL就不能像Centos6那麼用yum源直接安裝了
yum源中MySQL的安裝
1. 查看MySQL是否啓動
如果啓用,先停掉mysql進程: pkill -9 mysqld
2. 查看MySQL相關的安裝包
rpm -qa|grep -i mysql
如果有安裝包,則通過以下命令將所有MySQL安裝包刪除
yum -y remove mysql
3. 下載mysql的repo源,這源下載的是最新的版本
[fuyun@bigdata src]$ cd /usr/local/src/
在linux下wget命令用來從指定的URL下載文件。wget非常穩定,它在帶寬很窄的情況下和不穩定網絡中有很強的適應性,如果是由於網絡的原因下載失敗,wget會不斷的嘗試,直到整個文件下載完畢。如果是服務器打斷下載過程,它會再次聯到服務器上從停止的地方繼續下載。這對從那些限定了鏈接時間的服務器上下載大文件非常有用。
[fuyun@bigdata src]$ sudo wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
[fuyn@bigdata src]$ sudo rpm -ivh mysql57-community-release-el7-8.noarch.rpm
[fuyun@bigdata src]$ sudo yum -y install mysql-server
4. 啓動MySQL服務
[fuyun@bigdata src]$ sudo systemctl restart mysqld.service
5. 查看MySQL初始密碼並登錄MySQL
[fuyun@bigdata src]$ grep "password" /var/log/mysqld.log
用上面截圖的密碼登錄MySQL
mysql -u root -p
第一次登陸 ,需要重置密碼 要不什麼也不能操作
接下來重置密碼:5.7.20 爲了安全密碼 必須包含 數字字母(大小寫)符號
alter user 'root'@'localhost' identified by 'Mysql@123';
最後記得刷新權限;
flush privileges
也可以 直接再添加新用戶
mysql> CREATE USER 'fuyun'@'%' IDENTIFIED BY 'Mysql@123';
設置root用戶可以在任意ip登錄
mysql> grant all privileges on *.* to 'root'@'%' identified by 'Mysql@123' with grant option;
查詢用戶登錄ip和用戶名稱
mysql> select host, user from mysql.user;
刪除某用戶信息
mysql> delete from mysql.user where host = 'localhost' and user = 'root';
添加或修改後記得再次刷新權限
flush privileges
如果你想允許用戶myuser從ip爲192.168.1.6的主機連接到mysql服務器,並使用mypassword作爲密碼
grant all privileges on *.* to 'myuser'@'192.168.1.3' identified by 'mypassword' with grant option;
flush privileges;
如果你想允許用戶myuser從ip爲192.168.1.6的主機連接到mysql服務器的dk數據庫,並使用mypassword作爲密碼
grant all privileges on dk.* to 'myuser'@'192.168.1.3' identified by 'mypassword' with grant option;
flush privileges;
設置MySQL自啓動
查看系統當前默認啓動項目的方法,不再是setup之類的了。
systemctl list-unit-files
設置MySQL自啓動
systemctl enable mysqld
設置禁止MySQL自啓動
在開啓啓動中遇到自啓動問題
問題
如果出現系統重啓後,發現mysqld服務啓動正常,但是依賴mysql數據庫的應用程序A啓動失敗。
查看日誌顯示,程序A啓動的時候鏈接數據庫失敗。
可能原因
mysqld服務是正常啓動的。
此時手動重啓程序A,A也正常運行。
結論:說明程序A啓動的時候,mysqld可能沒有啓動。
解決方法
查看系統當前默認啓動項目的方法,不再是setup之類的了。
systemctl list-unit-files
執行此命令能查看當前系統的服務啓動和服務狀態。
取消mysqld的自啓動
systemctl disable mysqld
執行該命令後再查看當前系統的服務狀態:
自定義/etc/rc.local
先執行systemctl start mysqld
再執行startA
=====================================================================
此時MySQL已經開始正常運行,不過要想進入MySQL還得先找出此時root用戶的密碼,通過如下命令可以在日誌文件中找出密碼:
[root@localhost ~]# grep "password" /var/log/mysqld.log
如下命令進入數據庫:
[root@localhost ~]# mysql -uroot -p
輸入初始密碼,此時不能做任何事情,因爲MySQL默認必須修改密碼之後才能操作數據庫:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
這裏有個問題,新密碼設置的時候如果設置的過於簡單會報錯:
原因是因爲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 mysql57-community-release-el7-10.noarch
此時纔算真的完成了。