最近开始把代管的 WordPress 移到 Synology NAS 上,在数据库导入这块,如预期般的遇上不少问题,花了不少时间研究才一关一关的解决,把这个过程记录一下,分享给需要的人。
【環境】
- Synology 的 MariaDB、phpMyAdmin 已建置完成。
- 已从代管网站下载 .sql文件,大小约 250MB。
- 本地电脑已安装 DBeaver,本地作系统为 Manjaro。
【重点步骤】
- 透过 SSH 在 MariaDB 添加一个可以从 非 localhost 连线的帐户。因为一般账户的默认设置都只能从 localhost (就是NAS自己)连接。
- 将 MariaDB 的 max_allowed_packet 上限调大。默认只有 1M。
- 在本地安装 maria-clients,以供 DBeaver 使用还原数据库所需的指令。
《新增 MariaDB 帐户》
# 透過 SSH 連線 Synology NAS ssh myaccount@192.168.1.1 # myaccount 為 Synology 帳戶;192.168.1.1 為 Synology 位址 # 確認 bind-address 為 0.0.0.0 (預設值) more /volume1/@appstore/MariaDB10/usr/local/mariadb10/etc/mysql/my.cnf | grep bind-address # 確認 port 為 3306,且 Synology 上的防火牆有開啟對應的 port more /var/packages/MariaDB10/etc/my_port.cnf # 以 root 身份登入資料庫 /volume1/@appstore/MariaDB10/usr/local/mariadb10/bin/mysql --user=root --port=0 --password --host=localhost # 檢視資料庫現有的使用者 SELECT User, Host FROM mysql.user; # 記得最後要輸入分號 # 建立一個 dbeaver-restore 帳戶,密碼為 superstrongpassword,並允許其從 192.168.*.* 登入 CREATE USER 'dbeaver-restore'@'192.168.%' IDENTIFIED BY 'superstrongpassword'; # 給予 dbeaver-restore 存取所有資料庫的權限 GRANT ALL PRIVILEGES ON *.* TO 'dbeaver-restore'@'192.168.%' WITH GRANT OPTION; # 斷開資料庫連線 exit
《调整 MariaDB 封包上限》
# 確認目前 [mysqld] 底下的 max_allowed_packet 的數值 more /volume1/@appstore/MariaDB10/usr/local/mariadb10/etc/mysql/my.cnf # Synology 建議不要修改預設的 my.cnf 檔案 # 而是使用下面路徑 my.cnf 檔來套用自訂值 sudo vim /var/packages/MariaDB10/etc/my.cnf # 在 vim 按 i 後,貼上下面文字 [mysqld] max_allowed_packet = 500M # 設成大於 sql 檔大小的數值 # 按 ESC 後,存檔離開 :wq! # 重啟 MariaDB 服務 sudo /usr/syno/bin/synopkg restart MariaDB10
《透过 DBeaver 还原 sql 数据库》
1. 由于 DBeaver 需通过 mariadb 或 mysql 来还原数据库,因此需要先在本机安装「mariadb-clients」或「mysql-client」套件。
2. 透过 which mysql 指令确认 mysql 的位置,默认会在 /usr/bin/mysql。
which mysql
3. 在 DBeaver 设置数据库连接的画面中,要去本地客户端设定 mysql 的位置。
在本地客户端点击浏览”。
4. 新增一个 mysql 的位置。
◎ 依 DBeaver 官方文件说明,如果 mysql 的位置在 /usr/bin/mysql,那么这边设定成 /usr 即可,略过后面的 /bin/mysql。
◎ 如果 DBeaver 是从 Snap 套件库下载的版本,将路径转换为 /run/…,这会导致后续执行失败。如果有遇到这情形,改安装官方套件库的 DBeaver 即可。
5. 在目的数据库按右键,选择「工具」-「执行脚本」来还原数据库。
6. 选择来源 sql 文件,按【开始】即可进行还原。
《参考资料》
- host ” is not allowed to connect to this mariadb | Synology Community
- mysql中grant all privileges on赋给用户远程权限_grant all privileges on *.* 到-CSDN博客
- 鸟哥私房菜 – 第九章、vim 程序编辑器
- 是否可以在 Synology NAS 上自订 MariaDB 的设定? – Synology 知识中心
- DBeaver Documentation