refactor: name and explain user host login scope flag for mariadb

This commit is contained in:
David 2024-03-29 10:26:49 +01:00
parent 640e7d79b3
commit 6eb1607c0a
No known key found for this signature in database
GPG key ID: AB15A6AF1101390D
4 changed files with 35 additions and 18 deletions

View file

@ -38,6 +38,20 @@ from frappe.utils import CallbackManager
default=False,
help="Set MariaDB host to % and use TCP/IP Socket instead of using the UNIX Socket",
)
@click.option(
"--no-mariadb-socket",
is_flag=True,
default=False,
help="DEPRECATED: Set MariaDB host to % and use TCP/IP Socket instead of using the UNIX Socket",
)
@click.option(
"--mariadb-user-host-login-scope",
help=(
"Set the mariadb host for the user login scope if you don't want to use the current host as login "
"scope which typically is ''@'localhost' - may be used when initializing a user on a remote host. "
"See the mariadb docs on account names for more info."
),
)
@click.option("--admin-password", help="Administrator password for new site", default=None)
@click.option("--verbose", is_flag=True, default=False, help="Verbose")
@click.option("--force", help="Force restore if site/database already exists", is_flag=True, default=False)
@ -59,6 +73,7 @@ def new_site(
source_sql=None,
force=None,
no_mariadb_socket=False,
mariadb_user_host_login_scope=False,
install_app=None,
db_name=None,
db_password=None,
@ -72,11 +87,22 @@ def new_site(
"Create a new site"
from frappe.installer import _new_site
frappe.init(site=site, new_site=True)
if no_mariadb_socket:
click.secho(
"--no-mariadb-socket is DEPRECATED; "
"use --mariadb-user-host-login-scope='%' (wildcard) or --mariadb-user-host-login-scope=<myhostscope>, instead. "
"The name of this option was misleading: it had nothing to do with sockets.",
fg="yellow",
)
frappe.flags.mariadb_user_host_login_scope = "%"
if mariadb_user_host_login_scope:
frappe.flags.mariadb_user_host_login_scope = mariadb_user_host_login_scope
rollback_callback = CallbackManager()
try:
frappe.init(site=site, new_site=True)
_new_site(
db_name,
site,
@ -87,7 +113,6 @@ def new_site(
install_apps=install_app,
source_sql=source_sql,
force=force,
no_mariadb_socket=no_mariadb_socket,
db_password=db_password,
db_type=db_type,
db_host=db_host,

View file

@ -8,7 +8,7 @@ from shutil import which
from frappe.database.database import savepoint
def setup_database(force, verbose=None, no_mariadb_socket=False):
def setup_database(force, verbose=None):
import frappe
if frappe.conf.db_type == "postgres":
@ -18,9 +18,7 @@ def setup_database(force, verbose=None, no_mariadb_socket=False):
else:
import frappe.database.mariadb.setup_db
return frappe.database.mariadb.setup_db.setup_database(
force, verbose, no_mariadb_socket=no_mariadb_socket
)
return frappe.database.mariadb.setup_db.setup_database(force, verbose)
def bootstrap_database(verbose=None, source_sql=None):

View file

@ -19,7 +19,7 @@ def get_mariadb_version(version_string: str = ""):
return version.rsplit(".", 1)
def setup_database(force, verbose, no_mariadb_socket=False):
def setup_database(force, verbose):
frappe.local.session = frappe._dict({"user": "Administrator"})
db_user = frappe.conf.db_user
@ -27,8 +27,9 @@ def setup_database(force, verbose, no_mariadb_socket=False):
root_conn = get_root_connection()
dbman = DbManager(root_conn)
dbman_kwargs = {}
if no_mariadb_socket:
dbman_kwargs["host"] = "%"
if frappe.flags.mariadb_user_host_login_scope is not None:
dbman_kwargs["host"] = frappe.flags.mariadb_user_host_login_scope
dbman.create_user(db_user, frappe.conf.db_password, **dbman_kwargs)
if verbose:

View file

@ -46,7 +46,6 @@ def _new_site(
install_apps=None,
source_sql=None,
force=False,
no_mariadb_socket=False,
db_password=None,
db_type=None,
db_host=None,
@ -63,10 +62,6 @@ def _new_site(
print(f"Site {site} already exists, use `--force` to proceed anyway")
sys.exit(1)
if no_mariadb_socket and db_type != "mariadb":
print("--no-mariadb-socket requires db_type to be set to mariadb.")
sys.exit(1)
frappe.init(site=site)
if not db_name:
@ -96,7 +91,6 @@ def _new_site(
db_host=db_host,
db_port=db_port,
db_user=db_user,
no_mariadb_socket=no_mariadb_socket,
setup=setup_db,
rollback_callback=rollback_callback,
)
@ -133,7 +127,6 @@ def install_db(
db_host=None,
db_port=None,
db_user=None,
no_mariadb_socket=False,
setup=True,
rollback_callback=None,
):
@ -163,7 +156,7 @@ def install_db(
frappe.flags.root_password = root_password
if setup:
setup_database(force, verbose, no_mariadb_socket)
setup_database(force, verbose)
if rollback_callback:
rollback_callback.add(lambda: drop_user_and_database(db_name, db_user or db_name))