95 lines
2.4 KiB
Markdown
95 lines
2.4 KiB
Markdown
---
|
||
author: shenwei
|
||
tags: [database, mariadb, mysql, nas]
|
||
---
|
||
#nas #mysql #database #mariadb
|
||
|
||
```table-of-contents
|
||
```
|
||
|
||
## Internal Access
|
||
|
||
| IP | 192.168.3.17 |
|
||
| -------- | ------------ |
|
||
| Port | 3307 |
|
||
| Username | shenwei |
|
||
| Password | !Abcde12345 |
|
||
| Username | root |
|
||
| Password | !Abcde12345 |
|
||
|
||
|
||
## Public Access
|
||
|
||
| Domain | mysql.ishenwei.online |
|
||
| -------- | --------------------- |
|
||
| Port | 63307 |
|
||
| Username | shenwei |
|
||
| Password | !Abcde12345 |
|
||
| Username | root |
|
||
| Password | !Abcde12345 |
|
||
|
||
## MariaDB新安装后,需要强制创建一个用户用于远程访问(非本机IP访问),本机IP访问仅限root用户
|
||
|
||
进入 MariaDB(使用 socket 登陆):
|
||
```
|
||
sudo mysql -u root -p -S /run/mysqld/mysqld10.sock
|
||
|
||
```
|
||
|
||
查看 root 主机权限:
|
||
``` sql
|
||
select host, user from mysql.user;
|
||
```
|
||
|
||
``` bash
|
||
shenwei@SHENWEI_DS718:/usr/local/mariadb10/etc/mysql$ sudo mysql -u root -p -S /run/mysqld/mysqld10.sock
|
||
Enter password:
|
||
Welcome to the MariaDB monitor. Commands end with ; or \g.
|
||
Your MariaDB connection id is 8
|
||
Server version: 10.11.6-MariaDB Source distribution
|
||
|
||
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
|
||
|
||
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
|
||
|
||
MariaDB [(none)]> select host, user from mysql.user;
|
||
+-----------+-------------+
|
||
| Host | User |
|
||
+-----------+-------------+
|
||
| | PUBLIC |
|
||
| localhost | mariadb.sys |
|
||
| localhost | mysql |
|
||
| localhost | root |
|
||
+-----------+-------------+
|
||
4 rows in set (0.002 sec)
|
||
|
||
```
|
||
|
||
这里已经看到关键问题了:
|
||
**你的 MariaDB 只有 `root@localhost`,并没有 `root@%` 或你要连接用的用户账号**。
|
||
而从你外部客户端连接失败的最常见原因就是:**没有对应的 Host/User 组合 + 缺少权限**。
|
||
|
||
你现在的 `mysql.user` 内容:
|
||
|
||
``` bash
|
||
| | PUBLIC |
|
||
| localhost | mariadb.sys |
|
||
| localhost | mysql |
|
||
| localhost | root |
|
||
|
||
```
|
||
|
||
|
||
这里唯一能用的账号就是:
|
||
|
||
- `root@localhost` → **只能从本机 localhost 登录**
|
||
这意味着从 **Synology Docker、其他机器、同网段的客户端** 都不能用 root 连接。
|
||
|
||
## 创建一个允许远程访问的用户
|
||
|
||
``` sql
|
||
CREATE USER 'shenwei'@'%' IDENTIFIED BY '!Abcde12345';
|
||
GRANT ALL PRIVILEGES ON *.* TO 'shenwei'@'%' WITH GRANT OPTION;
|
||
FLUSH PRIVILEGES;
|
||
|
||
``` |