fix: do not set db_host to % and instead pass to setup_db

db_host != the hostname part after @, hmm. so instead we'll pass
no-mariadb-socket flag to setup_database where we'll drop and create
users with host set to the TCP/IP socket instead of the UNIX socket.

Signed-off-by: Chinmay D. Pai <chinmaydpai@gmail.com>
This commit is contained in:
Chinmay D. Pai 2020-03-06 13:02:26 +05:30
parent e5a896ef00
commit 004ddacbf1
No known key found for this signature in database
GPG key ID: 75507BE256F40CED
4 changed files with 14 additions and 12 deletions

View file

@ -50,10 +50,6 @@ def _new_site(db_name, site, mariadb_root_username=None, mariadb_root_password=N
print('--no-mariadb-socket requires db_type to be set to mariadb.')
sys.exit(1)
if no_mariadb_socket:
print('Using % as Database Host.')
db_host = "%"
if not db_name:
db_name = '_' + hashlib.sha1(site.encode()).hexdigest()[:16]
@ -77,7 +73,7 @@ def _new_site(db_name, site, mariadb_root_username=None, mariadb_root_password=N
install_db(root_login=mariadb_root_username, root_password=mariadb_root_password,
db_name=db_name, admin_password=admin_password, verbose=verbose,
source_sql=source_sql, force=force, reinstall=reinstall, db_type=db_type, db_host=db_host, db_port=db_port)
source_sql=source_sql, force=force, reinstall=reinstall, db_type=db_type, db_host=db_host, db_port=db_port, no_mariadb_socket=no_mariadb_socket)
apps_to_install = ['frappe'] + (frappe.conf.get("install_apps") or []) + (list(install_apps) or [])
for app in apps_to_install:

View file

@ -6,14 +6,14 @@
from __future__ import unicode_literals
def setup_database(force, source_sql=None, verbose=None):
def setup_database(force, source_sql=None, verbose=None, no_mariadb_socket=False):
import frappe
if frappe.conf.db_type == 'postgres':
import frappe.database.postgres.setup_db
return frappe.database.postgres.setup_db.setup_database(force, source_sql, verbose)
else:
import frappe.database.mariadb.setup_db
return frappe.database.mariadb.setup_db.setup_database(force, source_sql, verbose)
return frappe.database.mariadb.setup_db.setup_database(force, source_sql, verbose, no_mariadb_socket=no_mariadb_socket)
def drop_user_and_database(db_name, root_login=None, root_password=None):
import frappe

View file

@ -30,7 +30,7 @@ def get_mariadb_versions():
return versions
def setup_database(force, source_sql, verbose):
def setup_database(force, source_sql, verbose, no_mariadb_socket=False):
frappe.local.session = frappe._dict({'user':'Administrator'})
db_name = frappe.local.conf.db_name
@ -38,17 +38,23 @@ def setup_database(force, source_sql, verbose):
dbman = DbManager(root_conn)
if force or (db_name not in dbman.get_database_list()):
dbman.delete_user(db_name)
if no_mariadb_socket:
dbman.delete_user(db_name, host="%")
dbman.drop_database(db_name)
else:
raise Exception("Database %s already exists" % (db_name,))
dbman.create_user(db_name, frappe.conf.db_password)
if no_mariadb_socket:
dbman.create_user(db_name, frappe.conf.db_password, host="%")
if verbose: print("Created user %s" % db_name)
dbman.create_database(db_name)
if verbose: print("Created database %s" % db_name)
dbman.grant_all_privileges(db_name, db_name)
if no_mariadb_socket:
dbman.grant_all_privileges(db_name, db_name, host="%")
dbman.flush_privileges()
if verbose: print("Granted privileges to user %s and database %s" % (db_name, db_name))
@ -75,7 +81,7 @@ def setup_help_database(help_db_name):
def drop_user_and_database(db_name, root_login, root_password):
frappe.local.db = get_root_connection(root_login, root_password)
dbman = DbManager(frappe.local.db)
dbman.delete_user(db_name)
dbman.delete_user(db_name, host="%")
dbman.drop_database(db_name)
def bootstrap_database(db_name, verbose, source_sql=None):

View file

@ -22,7 +22,7 @@ from frappe.core.doctype.scheduled_job_type.scheduled_job_type import sync_jobs
def install_db(root_login="root", root_password=None, db_name=None, source_sql=None,
admin_password=None, verbose=True, force=0, site_config=None, reinstall=False,
db_type=None, db_host=None, db_port=None):
db_type=None, db_host=None, db_port=None, no_mariadb_socket=False):
if not db_type:
db_type = frappe.conf.db_type or 'mariadb'
@ -32,7 +32,7 @@ def install_db(root_login="root", root_password=None, db_name=None, source_sql=N
frappe.flags.root_login = root_login
frappe.flags.root_password = root_password
setup_database(force, source_sql, verbose)
setup_database(force, source_sql, verbose, no_mariadb_socket)
frappe.conf.admin_password = frappe.conf.admin_password or admin_password
@ -323,4 +323,4 @@ def extract_tar_files(site_name, file_path, folder_name):
finally:
frappe.destroy()
return tar_path
return tar_path