From 9e8edc1e5511f128dec6bcd70a10ebd263b76280 Mon Sep 17 00:00:00 2001 From: Hasan Ramezani Date: Thu, 11 Jun 2020 20:12:35 +0200 Subject: [PATCH] Fixed #31491 -- Allowed 'password' option in DATABASES['OPTIONS'] on MySQL. --- django/db/backends/mysql/client.py | 9 ++++++--- tests/dbshell/test_mysql.py | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/django/db/backends/mysql/client.py b/django/db/backends/mysql/client.py index e5b6a59fb2..904c450cef 100644 --- a/django/db/backends/mysql/client.py +++ b/django/db/backends/mysql/client.py @@ -11,7 +11,10 @@ class DatabaseClient(BaseDatabaseClient): args = [cls.executable_name] db = settings_dict['OPTIONS'].get('db', settings_dict['NAME']) user = settings_dict['OPTIONS'].get('user', settings_dict['USER']) - passwd = settings_dict['OPTIONS'].get('passwd', settings_dict['PASSWORD']) + password = settings_dict['OPTIONS'].get( + 'password', + settings_dict['OPTIONS'].get('passwd', settings_dict['PASSWORD']) + ) host = settings_dict['OPTIONS'].get('host', settings_dict['HOST']) port = settings_dict['OPTIONS'].get('port', settings_dict['PORT']) server_ca = settings_dict['OPTIONS'].get('ssl', {}).get('ca') @@ -24,8 +27,8 @@ class DatabaseClient(BaseDatabaseClient): args += ["--defaults-file=%s" % defaults_file] if user: args += ["--user=%s" % user] - if passwd: - args += ["--password=%s" % passwd] + if password: + args += ["--password=%s" % password] if host: if '/' in host: args += ["--socket=%s" % host] diff --git a/tests/dbshell/test_mysql.py b/tests/dbshell/test_mysql.py index 91c1a6cd50..95faa21647 100644 --- a/tests/dbshell/test_mysql.py +++ b/tests/dbshell/test_mysql.py @@ -43,6 +43,22 @@ class MySqlDbshellCommandTestCase(SimpleTestCase): }, })) + def test_options_password(self): + self.assertEqual( + [ + 'mysql', '--user=someuser', '--password=optionpassword', + '--host=somehost', '--port=444', 'somedbname', + ], + self.get_command_line_arguments({ + 'NAME': 'somedbname', + 'USER': 'someuser', + 'PASSWORD': 'settingpassword', + 'HOST': 'somehost', + 'PORT': 444, + 'OPTIONS': {'password': 'optionpassword'}, + }), + ) + def test_can_connect_using_sockets(self): self.assertEqual( ['mysql', '--user=someuser', '--password=somepassword',