文章目錄
- 前言
- Yum(Red Hat、CentOS)
-
- 一、配置
-
- 1. 檢視初始化密碼
- 2. 登入MySQL
- 3. 修改初始化密碼
- 4. `root`使用者遠端設定
- 5. 允許`root`使用者從任何主機通路資料庫
- 6. 建立`dbadmin`使用者
- 7. 允許`myuser`使用者從指定IP登入
- Apt(Debain、Ubuntu)
-
- 一、配置
- 坑!
此學習文是基于MySQL 8.0寫的
得益于大神朋友的悉心指導解決不少坑,才寫出此文,向大神奉上膝蓋
前言
參考文章 | 備注 |
---|---|
Linux - 線上安裝解除安裝MySQL 8.0(Yum、Apt) | 前置依賴 |
MySQL - MySQL 8.0基本操作:使用者 | 後置依賴 |
Yum(Red Hat、CentOS)
一、配置
1. 檢視初始化密碼
[[email protected] ~]$ sudo cat /var/log/mysqld.log | grep password
2019-07-15T00:42:14.636290Z 5 [Note] [MY-010454] [Server] A temporary password is generated for [email protected]: sx+H1gspzouH
2. 登入MySQL
首次登入用初始化密碼
[[email protected] ~]$ mysql -u root -p
3. 修改初始化密碼
建議修改初始化密碼,安全好記
密碼一定要大小寫字母+數字+符号,如:[email protected]
- 身份驗證插件類型
- mysql_native_password(MySQL 5.7版本)
- caching_sha2_password(MySQL 8.0版本)
4. root
使用者遠端設定
root
# 切換mysql庫
mysql> use mysql;
# 更新host,任意位址用 %
mysql> update mysql.user set host='%' where user='root';
# 查詢驗證一下,plugin是預設加密驗證插件
mysql> select host, user, plugin from mysql.user;
+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| % | root | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
+-----------+------------------+-----------------------+
4 rows in set (0.00 sec)
5. 允許 root
使用者從任何主機通路資料庫
root
庫名:要遠端通路的資料庫名稱,所有的資料庫使用
*
表名:要遠端通路的資料庫下的表的名稱,所有的表使用
*
使用者名:要賦給遠端通路權限的使用者名稱
IP位址:可以遠端通路的電腦的IP位址,所有的位址使用
%
密碼:要賦給遠端通路權限的使用者對應使用的密碼
# 開放遠端通路權限
mysql> grant all privileges on *.* to 'root'@'%' with grant option;
# 重新整理權限
mysql> flush privileges;
- 補充:如果報錯,不允許使用
GRANT
建立使用者
重新登陸
再次執行即可!root
ERROR 1410 (42000): You are not allowed to create a user with GRANT
6. 建立 dbadmin
使用者
dbadmin
使用
[email protected]
密碼從任何主機連接配接到mysql伺服器
# 建立新使用者,密碼永不過期
mysql> create user 'dbadmin'@'%' identified with mysql_native_password by '[email protected]' password expire never;
# 開放權限
mysql> grant all privileges on *.* to 'dbadmin'@'%' with grant option;
# 查詢驗證一下
mysql> select host, user, plugin from mysql.user;
+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| % | dbadmin | mysql_native_password |
| % | root | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)
-
:密碼永不過期password expire never
-
:表示該使用者可以将自己擁有的權限授權給别人。with grant option
7. 允許 myuser
使用者從指定IP登入
myuser
例如:IP為192.168.1.12的主機連接配接到mysql伺服器,并使用
mypassword
作為密碼
下面是個例子,不會執行成功的,需改成自己的使用者和密碼
Apt(Debain、Ubuntu)
一、配置
Apt的線上安裝方式已經設定了
root
密碼
直接使用密碼登陸就ok,後續操作與Yum方式一緻
坑!
- Navicat連接配接報
錯誤10060 "Unknown error"
- 關閉防火牆(
)生産環境千萬别這麼玩,應該設定特定端口的入站規則
# Yum
啟動: sudo systemctl start firewalld
關閉: sudo systemctl stop firewalld
開機啟用: sudo systemctl enable firewalld
開機禁用: sudo systemctl disable firewalld
檢視狀态: sudo systemctl status firewalld
# Apt
-
版本相容性
原因:MySQL 8.0 更換了預設的密碼政策,MySQL 5.8開始将
caching_sha2_password
作為預設的身份驗證插件,低版本Navicat不支援而已
解決辦法:登陸使用者的加密規則改成舊的
就行,或者更新Navicat為最新版本mysql_native_password
#修改加密規則,密碼永不過期
mysql> alter user 'root'@'%' identified by '{password}' password expire never;
#更新密碼(mysql_native_password模式)
mysql> alter user 'root'@'%' identified with mysql_native_password by '{newpassword}';
# 查詢驗證一下
mysql> select host, user, plugin from mysql.user;
+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| % | nan | mysql_native_password |
| % | root | mysql_native_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)