Django設置遠程數據庫訪問
連接時出現一些timeout問題,問題記錄
環境:
centos7
mysql5.7
Django2.*
remote connetion
mysql遠程數據庫授權
-
修改my.cnf文件(ubuntu下的地址爲:/etc/mysql/mysql.conf.d/mysqld.cnf)
vim /etc/my.cnf
有則修改無則添加 bind-address=0.0.0.0
重啓mysqld服務systemctl restart mysqld
-
鏈接mysql
mysql -u root -p
-
使用數據庫mysql
use mysql;
-
配置權限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
參數解釋:
a. “.” ---- 所有資源所有權限
b. “‘root’@%” — root 代表用戶名 % 代表所有的訪問地址(也可以使用一個唯一的地址進行替換,只有一個地址能夠訪問)。
c. IDENTIFIED BY ‘root’,這個root是指訪問密碼。
d. WITH GRANT OPTION允許級聯授權 -
刷新系統權限相關表數據 很重要
flush privileges;
-
查看是否添加成功
select Host, User from user;
-
驗證遠程訪問
mysql -u root -p -h 你的遠程host地址
centos 防火牆
如果還是超時, 查看centos防火牆及開放端口狀態
-
查看已經開放的端口:
firewall-cmd --list-ports
-
增加新的端口 mysql一般都是3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent
命令含義:
–zone # 作用域
–add-port=80/tcp # 添加端口,格式爲:端口/通訊協議 -
重啓防火牆
# 重啓firewall firewall-cmd --reload # 停止firewall systemctl stop firewalld.service # 禁止firewall開機啓動 systemctl disable firewalld.service
django 設置
上述兩步都沒有問題, 開始設置Django訪問, 步驟就很簡單了, 在settings.py中設置databases並添加相關參數即可,此處不再贅述. 如果遇到Django版本報錯base問題, 請查看問題解決辦法 : Django對MySQLdb版本的限制.