先看一下我的安裝環境
MySQL版本
鏈接 https://dev.mysql.com/downloads/repo/yum/
點擊跳轉下方圖片地址鏈接
這個rpm可以使用wget下載
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
也可以點擊DownLoad下載後在導入centos7中
下載完成後使用yum命令本地安裝yum源
yum localinstall mysql80-community-release-el7-1.noarch.rpm
執行完畢後使用下面的命令檢查是否安裝成功
yum repolist enabled | grep "mysql.*-community.*"
看到類似下圖說明安裝成功
[root@localhost 桌面]# yum repolist enabled | grep "mysql.*-community.*"
mysql-connectors-community/x86_64 MySQL Connectors Community 0
mysql-tools-community/x86_64 MySQL Tools Community 0
mysql80-community/x86_64 MySQL 8.0 Community Server 0
使用下面命令進行安裝
yum install -y mysql-community-server
安裝過程
[root@localhost 桌面]# yum install -y mysql-community-server
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.cqu.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.cqu.edu.cn
base | 3.6 kB 00:00
extras | 3.4 kB 00:00
mysql-connectors-community | 2.5 kB 00:00
mysql-tools-community | 2.5 kB 00:00
mysql80-community | 2.5 kB 00:00
updates | 3.4 kB 00:00
(1/7): extras/7/x86_64/primary_db | 205 kB 00:02
(2/7): base/7/x86_64/group_gz | 166 kB 00:02
(3/7): mysql-connectors-community/x86_64/primary_db | 29 kB 00:02
(4/7): mysql-tools-community/x86_64/primary_db | 48 kB 00:02
(5/7): mysql80-community/x86_64/primary_db | 35 kB 00:00
(6/7): base/7/x86_64/primary_db | 5.9 MB 00:03
(7/7): updates/7/x86_64/primary_db | 6.0 MB 00:01
正在解決依賴關係
--> 正在檢查事務
---> 軟件包 mysql-community-server.x86_64.0.8.0.13-1.el7 將被 安裝
--> 正在處理依賴關係 mysql-community-common(x86-64) = 8.0.13-1.el7,它被軟件包 mysql-community-server-8.0.13-1.el7.x86_64 需要
--> 正在處理依賴關係 mysql-community-client(x86-64) >= 8.0.0,它被軟件包 mysql-community-server-8.0.13-1.el7.x86_64 需要
--> 正在檢查事務
---> 軟件包 mysql-community-client.x86_64.0.8.0.13-1.el7 將被 安裝
--> 正在處理依賴關係 mysql-community-libs(x86-64) >= 8.0.0,它被軟件包 mysql-community-client-8.0.13-1.el7.x86_64 需要
---> 軟件包 mysql-community-common.x86_64.0.8.0.13-1.el7 將被 安裝
--> 正在檢查事務
---> 軟件包 mariadb-libs.x86_64.1.5.5.56-2.el7 將被 取代
--> 正在處理依賴關係 libmysqlclient.so.18()(64bit),它被軟件包 2:postfix-2.10.1-6.el7.x86_64 需要
--> 正在處理依賴關係 libmysqlclient.so.18(libmysqlclient_18)(64bit),它被軟件包 2:postfix-2.10.1-6.el7.x86_64 需要
---> 軟件包 mysql-community-libs.x86_64.0.8.0.13-1.el7 將被 捨棄
--> 正在檢查事務
---> 軟件包 mysql-community-libs-compat.x86_64.0.8.0.13-1.el7 將被 捨棄
--> 解決依賴關係完成
依賴關係解決
================================================================================
Package 架構 版本 源 大小
================================================================================
正在安裝:
mysql-community-libs x86_64 8.0.13-1.el7 mysql80-community 2.3 M
替換 mariadb-libs.x86_64 1:5.5.56-2.el7
mysql-community-libs-compat x86_64 8.0.13-1.el7 mysql80-community 2.1 M
替換 mariadb-libs.x86_64 1:5.5.56-2.el7
mysql-community-server x86_64 8.0.13-1.el7 mysql80-community 381 M
爲依賴而安裝:
mysql-community-client x86_64 8.0.13-1.el7 mysql80-community 26 M
mysql-community-common x86_64 8.0.13-1.el7 mysql80-community 554 k
事務概要
================================================================================
安裝 3 軟件包 (+2 依賴軟件包)
總下載量:412 M
Downloading packages:
警告:/var/cache/yum/x86_64/7/mysql80-community/packages/mysql-community-common-8.0.13-1.el7.x86_64.rpm: 頭V3 DSA/SHA1 Signature, 密鑰 ID 5072e1f5: NOKEY
mysql-community-common-8.0.13-1.el7.x86_64.rpm 的公鑰尚未安裝
(1/5): mysql-community-common-8.0.13-1.el7.x86_64.rpm | 554 kB 00:00
(2/5): mysql-community-libs-8.0.13-1.el7.x86_64.rpm | 2.3 MB 00:00
(3/5): mysql-community-libs-compat-8.0.13-1.el7.x86_64.rpm | 2.1 MB 00:00
(4/5): mysql-community-client-8.0.13-1.el7.x86_64.rpm | 26 MB 00:06
(5/5): mysql-community-server-8.0.13-1.el7.x86_64.rpm | 381 MB 00:39
--------------------------------------------------------------------------------
總計 10 MB/s | 412 MB 00:41
從 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 檢索密鑰
導入 GPG key 0x5072E1F5:
用戶ID : "MySQL Release Engineering <[email protected]>"
指紋 : a4a9 4068 76fc bd3c 4567 70c8 8c71 8d3b 5072 e1f5
軟件包 : mysql80-community-release-el7-1.noarch (installed)
來自 : /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安裝 : mysql-community-common-8.0.13-1.el7.x86_64 1/6
正在安裝 : mysql-community-libs-8.0.13-1.el7.x86_64 2/6
正在安裝 : mysql-community-client-8.0.13-1.el7.x86_64 3/6
正在安裝 : mysql-community-server-8.0.13-1.el7.x86_64 4/6
正在安裝 : mysql-community-libs-compat-8.0.13-1.el7.x86_64 5/6
正在刪除 : 1:mariadb-libs-5.5.56-2.el7.x86_64 6/6
驗證中 : mysql-community-libs-compat-8.0.13-1.el7.x86_64 1/6
驗證中 : mysql-community-libs-8.0.13-1.el7.x86_64 2/6
驗證中 : mysql-community-client-8.0.13-1.el7.x86_64 3/6
驗證中 : mysql-community-server-8.0.13-1.el7.x86_64 4/6
驗證中 : mysql-community-common-8.0.13-1.el7.x86_64 5/6
驗證中 : 1:mariadb-libs-5.5.56-2.el7.x86_64 6/6
已安裝:
mysql-community-libs.x86_64 0:8.0.13-1.el7
mysql-community-libs-compat.x86_64 0:8.0.13-1.el7
mysql-community-server.x86_64 0:8.0.13-1.el7
作爲依賴被安裝:
mysql-community-client.x86_64 0:8.0.13-1.el7
mysql-community-common.x86_64 0:8.0.13-1.el7
替代:
mariadb-libs.x86_64 1:5.5.56-2.el7
完畢!
使用systemctl start mysqld
命令啓動
使用systemctl status mysqld
查看服務啓動狀態
服務啓動過程
[root@localhost 桌面]# systemctl start mysqld
[root@localhost 桌面]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 四 2018-11-22 19:38:59 CST; 1min 39s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 55058 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 55140 (mysqld)
Status: "SERVER_OPERATING"
Tasks: 37
CGroup: /system.slice/mysqld.service
└─55140 /usr/sbin/mysqld
11月 22 19:38:36 localhost.localdomain systemd[1]: Starting MySQL Server...
11月 22 19:38:59 localhost.localdomain systemd[1]: Started MySQL Server.
設置開機啓動
systemctl enable mysqld
systemctl daemon-reload
修改root的默認密碼
在修改密碼之前要先做一件事,就是找到mysql的配置文件(vim /etc/my.cnf)↓
把密碼的加密方式改成之前版本的,8.0版本更換了密碼的加密方式,我們就先用舊的
找到Mysql的配置文件並編輯
vim /etc/my.cnf
找到 default-authentication-plugin=mysql_native_password
打開註釋,保存退出編輯。
查詢密碼命令
grep 'temporary password' /var/log/mysqld.log
查詢過程
[root@localhost 桌面]# grep 'temporary password' /var/log/mysqld.log
2018-11-22T11:38:51.559334Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 5(Y2Ly+Cs:Q*
5(Y2Ly+Cs:Q*就是我的初始化登錄密碼
登錄mysql
[root@localhost 桌面]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.13
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
登錄後不允許進行任何操作,我們需要先修改密碼,否則一直會報下面這個錯誤
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
密碼修改命令,如果報錯可能是密碼設置的簡單了
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密碼';
如果不想輸入太複雜的密碼,可以通過下面的方式降低密碼複雜度,這樣密碼就可以隨便設置了
查看密碼設置策略
SHOW VARIABLES LIKE 'validate_password%';
得到下面結果
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password.check_user_name | ON |
| 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.06 sec)
參數解釋
validate_password.check_user_name
用戶名檢測
validate_password_dictionary_file
插件用於驗證密碼強度的字典文件路徑。
validate_password_length
密碼最小長度
validate_password_mixed_case_count
密碼至少要包含的小寫字母個數和大寫字母個數。
validate_password_number_count
密碼至少要包含的數字個數。
validate_password_policy
密碼強度檢查等級,0/LOW、1/MEDIUM、2/STRONG。有以下取值:
Policy Tests Performed
0 or LOW Length
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file
默認是1,即MEDIUM,所以剛開始設置的密碼必須符合長度,且必須含有數字,小寫或大寫字母,特殊字符。
validate_password_special_char_count
密碼至少要包含的特殊字符數。
我們用下面兩條命令修改密碼強度限制
設置密碼強度級別,三個數字分別對應低,中,高三個級別.我們設置成"低"也就是0
set global validate_password.policy=0;
這個是設置密碼長度的,不能低於4位,根據需要自己設置長度.
set global validate_password.length=4;
這個是修改密碼的命令,給root用戶本地登錄設置密碼
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '我的密碼';
增加遠程連接用戶
創建用戶(user:用戶名;%:任意ip,也可以指定)
CREATE USER 'testname'@'%' IDENTIFIED BY 'testpwd';
授權,默認創建的用戶權限是usage,就是無權限,只能登錄而已
(all:所有權限,這裏有select,update等等權限,可以去搜一下;後面的.*:指定數據庫.指定表,這裏是所有;to後面就是你剛纔創建的用戶)*
grant all on *.* to 'testname'@'%';
注意:用以上命令授權的用戶不能給其它用戶授權,如果想讓該用戶可以授權,用以下命令:
username與host 根據情況進行修改
GRANT all ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
最後刷新一下
FLUSH PRIVILEGES;
使用Navicat 遠程登錄
更改加密方式:
ALTER USER 'testname'@'%' IDENTIFIED BY 'testpwd' PASSWORD EXPIRE NEVER;
更改密碼:testpwd
ALTER USER 'testname'@'%' IDENTIFIED WITH mysql_native_password BY 'testpwd';
最後刷新一下
FLUSH PRIVILEGES;
防火牆設置,讓 3306 端口對外可訪問
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
# 查看規則是否生效
iptables -L -n # 或者: service iptables status
# 此時生產環境是不安全的,遠程管理之後應該關閉端口,刪除之前添加的規則
iptables -D INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
注意:上面iptables添加/刪除規則都是臨時的,如果需要重啓後也生效,需要保存修改:
service iptables save # 或者: /etc/init.d/iptables save
或者
vi /etc/sysconfig/iptables # 加上下面這行規則也是可以的
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT