【问题标题】:django.db.utils.OperationalError: (1045, Access denied for user '<user>'@'localhost'django.db.utils.OperationalError: (1045, Access denied for user '<user>'@'localhost'
【发布时间】:2015-11-17 06:56:59
【问题描述】:

我无法让我的 Django 项目正确加载我的数据库。它抛出这个错误。

我正在使用 Django 运行 MariaDB,并且我卸载了所有 MySQL

我通过运行添加了用户:

create database foo_db;
create user foo_user identified by 'foo_password';
grant all on foo_db.* to 'foo_user'@'%';
flush privileges;

按照this post.的建议

当我尝试运行./manage.py runserver时,控制台向我抛出了这个错误

django.db.utils.OperationalError: (1045, "Access denied for user '<user>'@'localhost' (using password: YES)")

我已运行“创建用户”命令并创建了用户以匹配我的安装脚本,该脚本的默认设置为:

        'ENGINE': 'django.contrib.gis.db.backends.mysql',
        'NAME': 'company_production',
        'USER': 'companydev',
        'PASSWORD': 'companydevpass',
        'HOST': 'localhost',
        'PORT': '',
        'ATOMIC_REQUESTS': True

我已经尝试了所有我能在这里找到的与它抛出的错误相关的东西,但没有任何效果。

我正在运行 Mac OSX 10.11.1 El Capitan 和 MariaDB 版本 10.1.8,如果这完全相关的话。

【问题讨论】:

    标签: python django mariadb access-denied


    【解决方案1】:

    这是我用来为 Django 项目重新创建 MySQL 数据库的方法:

    tmp="/tmp/mysql-tools.sh.tmp"
    
    setup-db ( ) {
        cat <<EOF > $tmp
    DROP DATABASE $DB;
    CREATE DATABASE $DB;
    GRANT USAGE on *.* to '${DB_USER}'@'localhost' IDENTIFIED BY '${DB_PASS}';
    GRANT ALL PRIVILEGES ON ${DB}.* to '${DB_USER}'@'localhost';
    EOF
        cat $tmp
        mysql -f -u ${MYSQL_ROOTUSR} -p${MYSQL_ROOTPWD} < $tmp
        rm $tmp
    }
    

    警告:这会掉落并重新创建!

    地点:

    • DB:数据库名称
    • DB_USER:django 数据库用户
    • DB_PASS:Django 数据库用户的 mysql 连接密码
    • MYSQL_ROOTUSR:mysql root 用户(必须有创建数据库的权限)
    • MYSQL_ROOTPWD:mysql root 密码

    导出环境中的那些

    【讨论】:

    • 我知道这是一个延迟回复,但谢谢!运行这个脚本解决了我的问题!或者至少,让我克服了那个错误并为我打开了另一个错误!哈哈谢谢!
    【解决方案2】:

    你的错误会告诉你哪里出错了......

    django.db.utils.OperationalError: (1045, "Access denied for user '<user>'@'localhost' (using password: YES)")
    

    这意味着django 尝试使用用户user 访问数据库,而不是您在settings.py 中定义的。

    我猜您在执行runserver 之前忘记执行python manage.py migrate,因为您的设置尚未反映在django 引擎中。

    【讨论】:

      【解决方案3】:

      这可能是由于 Django 尝试使用错误的用户而不是您在 MySQL DB 中设置的用户

      从 USERNAME 更改设置 -> USER 可以提供帮助:)

      我收到了错误

      'NAME': '数据库名称', '用户名':'root', '密码':'******', '端口':'3306', '主机':'本地主机',

      但它适用于 ---

      'NAME': '数据库名称', '用户':'根', '密码':'********', '端口':'3306', '主机':'本地主机',

      【讨论】:

        猜你喜欢
        • 2018-12-29
        • 1970-01-01
        • 2016-09-28
        • 2012-04-28
        • 2015-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多