Centos7 安裝Mysql5.7 使用yum 方式安裝方便Mysql及時更新
1. 下載mysql yum庫
最新版本地址: http://dev.mysql.com/downloads/repo/yum/
注意:
1. Centos5 對應 Red Hat Enterprise Linux 5
2. Centos6 對應Red Hat Enterprise Linux 6
3. Centos7 對應Red Hat Enterprise Linux 7
# 如果沒有wget 可以安裝 yum install wget
wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
2. 安裝 Mysql yum 庫
yum localinstall mysql-community-release-el7-{version-number}.noarch.rpm
3. 更新yum
yum update
這次應該能看到mysql安裝
4. 查看當前啓動的mysql版本
yum repolist all | grep mysql
可以看到當前啓用MySQL版本,默認啓用最高版本Mysql,可手動啓用其他版本
5. 安裝Mysql數據庫
yum install mysql-community-server
會看到正在下載Mysql數據庫
6. 啓動Mysql數據庫
systemctl start mysqld.service
查看Mysql服務啓動情況
systemctl status mysqld.service
注意: 啓動出錯: Can’t change data directory owner to mysql
由於安全限制需要將防火牆關閉 setenforce 0
7. 修改Root密碼
1. 查看root臨時密碼
grep 'temporary password' /var/log/mysqld.log
2. 使用臨時密碼登錄Mysql
mysql -uroot -p
3. 修改root密碼
a. 自定義密碼安全策略:validate_password_policy (修改該值即可)
- 取值有3中:
- 0 or LOW : 長度,至少8位
- 1 or MEDIUM : 符合長度,且必須含有數字,小寫或大寫字母,特殊字符。
- 2 or STRONG : 符合長度,且必須含有數字,小寫或大寫字母,特殊字符。字典文件
測試環境密碼不需要那麼複雜,設置級別爲0即可
mysql> set global validate_password_policy=0;
b. 查看密碼長度(需要修改密碼之後才能執行):
mysql> SHOW VARIABLES LIKE 'validate_password%';
# 修改密碼長度爲6,默認爲8
mysql> set global validate_password_length=6;
c. 修改Root密碼:
# 修改root密碼
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
詳細權限配置參考: https://www.cnblogs.com/candle806/p/4048651.html
注意: 如果忘記初始密碼可以在mysql日誌文件中查找 /var/log/mysqld.log
8. Mysql數據庫目錄遷移(可選)
- 對於首次啓動Mysql,修改my.cnf 之後可以使用如下命令,初始化目錄
mysql_install_db --user=mysql \
--basedir=/opt/mysql/mysql \
--datadir=/opt/mysql/mysql/data
詳細說明參考:https://dev.mysql.com/doc/refman/5.6/en/mysql-install-db.html
另外一種使用mysqld 初始化數據目錄
詳細說明參考:https://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization-mysqld.html
問題:
如果目錄權限正確,但是不能啓動MySQL,可能跟SeLinux有關,修改seLinux指定目錄權限即可
chcon -R -t mysqld_db_t dir
臨時關閉防火牆:
setenforce 0
永久關閉防火牆:
# 將SELINUX=enforcing改爲SELINUX=disabled
vim /etc/selinux/config
9. Mysql用戶授權
1. 創建用戶
mysql > CREATE USER 'username'@'%' IDENTIFIED BY 'password';
2. 給用戶授予數據庫操作權限:
# % 爲全部Ip, 數據庫名.標名 可以使用 * 代替,表示所有庫中所有表
mysql > grant all privileges on database_name.table_name to 'username'@'host';
3. 取消用戶數據庫操作權限
mysql> revoke all on dingshops.* from 'test'@'%';
4. 查看用戶數據庫操作權限:
mysql> show grants for 'test'@'%';
5. 更改用戶密碼
mysql> SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
6. 刷新使權限生效:
mysql>flush privileges;