配置阿里云服务器mysql + django2.1 (踩坑总结)

踩坑一

django settings中配置完数据库连接参数,安装 pymysql 后,并在 ini 文件下写配置后,创建测试用数据表报错

django.db.utils.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED' at line 1")

  • 解决办法: 再确认数据库配置参数配置无误后,这个报错的原因是mysql版本问题,由于我用的默认yum 安装的mysql 数据库,版本为 5.1 而 django 2.1 不再支持 5.5 及以下版本,所以将 5.1 版本卸载安装mysql5.6。

踩坑二

安装好mysql,登录时报错

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

  • 解决办法mysql 5.6.8 以后root 用户不在是空密码,mysql会给root账号随机分配一个密码,安装MySQL后,root的这个随机密码会写在文件 .mysql_secret中,但这个密码不能做任何事情,只能登录。然后必须更改密码才能正常使用。
    但是由于我没有找到这个文件所以也可以采取更简单粗暴的方法直接修改root密码
1.停止mysql数据库:systemctl stop mysqld

2.用以下命令启动MySQL,以不检查权限的方式启动:

mysqld --skip-grant-tables &

此时又报了一个错误:2018-02-01T02:52:55.093724Z 0 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!

执行命令:mysqld --user=root --skip-grant-tables &

3.登录mysql:mysql -uroot或mysql

4.更新root密码

mysql5.7以下版本:UPDATE mysql.user SET Password=PASSWORD('123456') where USER='root';

mysql5.7版本:UPDATE mysql.user SET authentication_string=PASSWORD('123456') where USER='root';

5.刷新权限:flush privileges;

6.退出mysql:exit或quit

7.使用root用户重新登录mysql

mysql -uroot -p

Enter password:<输入新设的密码123456>
--------------------- 
来源:CSDN 
原文:https://blog.csdn.net/qq_32786873/article/details/79225039 

踩坑三

mysql 配置完成后,创建了一个admin用户并允许远程登陆数据库,再次在django中创建测试表,发现依旧报错

pymysql.err.OperationalError: (1045, "Access denied for user 'admin'@'localhost' (using password: YES)")

解决办法:


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',               # 数据库引擎
        'NAME': 'mydb1',                                                      #数据库名称
        'USER': 'admin',           换成 root                                        # 链接数据库的用户名
        'PASSWORD': '123.com',                                # 链接数据库的密码
        'HOST': '127.0.0.1',                                                # mysql服务器的域名和ip地址
        'PORT': '3306',                                                        # mysql的一个端口号,默认是3306
    }
由于我代码是在本地运行,而我创建的admin只能在远程登陆操作数据库,所以将登陆账户换成root 账户重新测试问题解决 

你可能感兴趣的:(配置阿里云服务器mysql + django2.1 (踩坑总结))