Django設置遠程數據庫訪問踩坑

Django設置遠程數據庫訪問
連接時出現一些timeout問題,問題記錄
環境:
centos7
mysql5.7
Django2.*
remote connetion

mysql遠程數據庫授權

  1. 修改my.cnf文件(ubuntu下的地址爲:/etc/mysql/mysql.conf.d/mysqld.cnf)

    vim /etc/my.cnf
    

    有則修改無則添加 bind-address=0.0.0.0
    重啓mysqld服務

    systemctl restart mysqld
    
  2. 鏈接mysql

    mysql -u root -p
    
  3. 使用數據庫mysql

    use mysql;
    
  4. 配置權限

    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允許級聯授權

  5. 刷新系統權限相關表數據 很重要

    flush privileges;
    
  6. 查看是否添加成功

    select Host, User from user;
    
  7. 驗證遠程訪問

    mysql -u root -p -h 你的遠程host地址
    

centos 防火牆

如果還是超時, 查看centos防火牆及開放端口狀態

  1. 查看已經開放的端口:

    firewall-cmd --list-ports
    
  2. 增加新的端口 mysql一般都是3306

    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    

    命令含義:
    –zone # 作用域
    –add-port=80/tcp # 添加端口,格式爲:端口/通訊協議

  3. 重啓防火牆

    # 重啓firewall  
    firewall-cmd --reload  
    # 停止firewall  
    systemctl stop firewalld.service  
    # 禁止firewall開機啓動  
    systemctl disable firewalld.service 
    

django 設置

上述兩步都沒有問題, 開始設置Django訪問, 步驟就很簡單了, 在settings.py中設置databases並添加相關參數即可,此處不再贅述. 如果遇到Django版本報錯base問題, 請查看問題解決辦法 : Django對MySQLdb版本的限制.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章