Django 從 SQLite 切換到 MySQL 時總是提示 No module named ‘MySQLdb’

初次使用 Django ,預設的資料庫是 SQLite ,想切換使用 MySQL,配置了資料庫之後,runserver 總是會出錯

'Did you install mysqlclient or MySQL-python?' % e
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'.
Did you install mysqlclient or MySQL-python?

後來查資料,看來是 python3 之後,原本的 python2 的 mysqldb 已經不能連接 mysql 了,要改成使用pymysql,來連接 mysql 。

於是我嘗試使用 pip 安裝了 PyMySQL,還是報錯,所以我再查了一下,原來還要在網站設定的 __init__.py 文件中再添加

import pymysql
pymysql.install_as_MySQLdb()

這樣就可以正常連接 MySQL 了,供大家參考

MySQL 修改 root 用戶密碼

  • 關閉 MySQL 服務。
sudo /usr/local/mysql/support-files/mysql.server stop
  • 安全模式啟動 MySQL
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  • 修改 root 密碼

逐一輸入以下命令,修改 root 密碼並退出。

mysql -u root
UPDATE mysql.user SET

這裡要注意一下,5.7後的版本,mysql.user 表裡面的 password 改成了:authentication_string

authentication_string=PASSWORD('my-new-password') WHERE User='root';

FLUSH PRIVILEGES;

運行完以上命令後,root 的密碼就修改成你設置的密碼了。

  • 測試
    運行以下命令測試密碼是否修改成功。
mysql -u root -p

 

然後輸入你新設置的密碼。

如果輸入無誤,應該會出現 MySQL 命令行窗口,如下:

mysql>