首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KiwiTCMS - MySQL数据库的mysql_native_password加密方法

KiwiTCMS - MySQL数据库的mysql_native_password加密方法
EN

Stack Overflow用户
提问于 2020-08-28 10:07:13
回答 1查看 133关注 0票数 1

设置

  • kiwi -最新的
  • mysql -latest (v8.0.21)
  • os - mac

我已经将docker-compose.yml更改如下,它可以启动这两个容器.

代码语言:javascript
复制
    services:
        db:
            container_name: kiwi_db
            image: mysql:latest
            volumes:
                - db_data:/var/lib/kiwi_mysql/data
                # workaround for missing charset & collation support
                # https://github.com/sclorg/mariadb-container/pull/125
                - ./99-charset.sh:/usr/share/container-scripts/mysql/init/99-charset.sh:Z
                - ./99-charset.cnf:/usr/share/container-scripts/mysql/cnf/99-charset.cnf:Z
            restart: always
            environment:
                MYSQL_ROOT_PASSWORD: kiwi-1s-aw3s0m3
                MYSQL_DATABASE: kiwi
                MYSQL_USER: kiwi
                MYSQL_PASSWORD: kiwi
                MYSQL_CHARSET: utf8mb4
                MYSQL_COLLATION: utf8mb4_unicode_ci
    
        web:
            container_name: kiwi_web
            depends_on:
                - db
            restart: always
            image: kiwitcms/kiwi:latest
            ports:
                - 9001:8080
                - 9443:8443
            volumes:
                - uploads:/Kiwi/uploads:Z
            environment:
                KIWI_DB_HOST: db
                KIWI_DB_PORT: 3306
                KIWI_DB_NAME: kiwi
                KIWI_DB_USER: kiwi
                KIWI_DB_PASSWORD: kiwi
                KIWI_DONT_ENFORCE_HTTPS: "true"
            links:
                - db
    
    volumes:
        db_data:
        uploads:

当我执行docker exec -it kiwi_web /Kiwi/manage.py migrate时,它会得到一些错误消息。

我试图将用户密码的加密方法从caching_ sha2_ Password更改为mysql_native_password,但仍然弹出相同的错误消息。

错误的追溯:

代码语言:javascript
复制
    Traceback (most recent call last):
      File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 220, in ensure_connection
        self.connect()
      File "/venv/lib/python3.6/site-packages/django/utils/asyncio.py", line 26, in inner
        return func(*args, **kwargs)
      File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 197, in connect
        self.connection = self.get_new_connection(conn_params)
      File "/venv/lib/python3.6/site-packages/django/utils/asyncio.py", line 26, in inner
        return func(*args, **kwargs)
      File "/venv/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 233, in get_new_connection
        return Database.connect(**conn_params)
      File "/venv/lib/python3.6/site-packages/MySQLdb/__init__.py", line 130, in Connect
        return Connection(*args, **kwargs)
      File "/venv/lib/python3.6/site-packages/MySQLdb/connections.py", line 185, in __init__
        super().__init__(*args, **kwargs2)
    MySQLdb._exceptions.OperationalError: (2059, 'Plugin caching_sha2_password could not be loaded: lib64/mariadb/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory')

上述异常是导致以下异常的直接原因:

代码语言:javascript
复制
   Traceback (most recent call last):
     File "/Kiwi/manage.py", line 12, in <module>
       execute_from_command_line(sys.argv)
     File "/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
       utility.execute()
     File "/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 395, in execute
       self.fetch_command(subcommand).run_from_argv(self.argv)
     File "/venv/lib/python3.6/site-packages/django/core/management/base.py", line 328, in run_from_argv
       self.execute(*args, **cmd_options)
     File "/venv/lib/python3.6/site-packages/django/core/management/base.py", line 366, in execute
       self.check()
     File "/venv/lib/python3.6/site-packages/django/core/management/base.py", line 395, in check
       include_deployment_checks=include_deployment_checks,
     File "/venv/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 63, in _run_checks
       issues = run_checks(tags=[Tags.database])
     File "/venv/lib/python3.6/site-packages/django/core/checks/registry.py", line 72, in run_checks
       new_errors = check(app_configs=app_configs)
     File "/venv/lib/python3.6/site-packages/django/core/checks/database.py", line 10, in check_database_backends
       issues.extend(conn.validation.check(**kwargs))
     File "/venv/lib/python3.6/site-packages/django/db/backends/mysql/validation.py", line 9, in check
       issues.extend(self._check_sql_mode(**kwargs))
     File "/venv/lib/python3.6/site-packages/django/db/backends/mysql/validation.py", line 13, in _check_sql_mode
       with self.connection.cursor() as cursor:
     File "/venv/lib/python3.6/site-packages/django/utils/asyncio.py", line 26, in inner
       return func(*args, **kwargs)
     File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 260, in cursor
       return self._cursor()
     File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 236, in _cursor
       self.ensure_connection()
     File "/venv/lib/python3.6/site-packages/django/utils/asyncio.py", line 26, in inner
       return func(*args, **kwargs)
     File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 220, in ensure_connection
       self.connect()
     File "/venv/lib/python3.6/site-packages/django/db/utils.py", line 90, in __exit__
       raise dj_exc_value.with_traceback(traceback) from exc_value
     File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 220, in ensure_connection
       self.connect()
     File "/venv/lib/python3.6/site-packages/django/utils/asyncio.py", line 26, in inner
       return func(*args, **kwargs)
     File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 197, in connect
       self.connection = self.get_new_connection(conn_params)
     File "/venv/lib/python3.6/site-packages/django/utils/asyncio.py", line 26, in inner
       return func(*args, **kwargs)
     File "/venv/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 233, in get_new_connection
       return Database.connect(**conn_params)
     File "/venv/lib/python3.6/site-packages/MySQLdb/__init__.py", line 130, in Connect
       return Connection(*args, **kwargs)
     File "/venv/lib/python3.6/site-packages/MySQLdb/connections.py", line 185, in __init__
       super().__init__(*args, **kwargs2)
   django.db.utils.OperationalError: (2059, 'Plugin caching_sha2_password could not be loaded: lib64/mariadb/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-31 09:49:56

您正在尝试使用正式的MySQL停靠映像,并为CentOS MariaDB映像配置一个docker-compose.yml,而Kiwi默认使用这种配置。

快速查看MySQL在https://hub.docker.com/_/mysql上的容器映像就会发现,它不支持MariaDB映像中使用的一些环境变量。

我看到的错误是由于试图使用看来与MySQL不兼容的mariadb客户端库(以建立连接)而引起的。我认为现在MariaDB和MySQL的最新版本之间存在着相当多的不兼容。

所以你需要做两件事:

  1. 研究了如何根据它们的文档

通过环境变量正确地配置MySQL容器。

  1. 计算出MariaDB客户端库是否将与MySQL服务器(或不使用)一起工作。

有关参考,请参见https://docs.djangoproject.com/en/3.0/ref/databases/#mariadb-notes

对于2)您可以在GitHub上打开一个问题,所以我们不要忘记将它添加到测试套件中。在我的头顶上,最近mysql/mariadb库的状态是什么,以及它们是否可以并排安装和使用,或者它们是否会相互冲突。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63631690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档