id = "mycli" name = "mycli" homepage = "https://www.mycli.net" description = "Rich MySQL terminal client with auto-completion, syntax highlighting, and dataframes." executables = ["mycli"] [dotfiles] # The project's README, "Config": "Mycli creates a config file ~/.myclirc on # the first run; you can use the options in that file to configure the above # features, and more." A plain home dotfile — mycli does not read # $XDG_CONFIG_HOME for it — so it is written literally. paths = ["~/.myclirc"] # The three paths the shipped myclirc (mycli/myclirc in the repository) sets by # default, all of them per-session records rather than configuration: # `history_file = ~/.mycli-history`, `log_file = ~/.mycli.log` and the # commented-out `audit_log = ~/.mycli-audit.log`. None is under the path above, # so there is nothing to carve out of what is; they are named so a consumer # syncing by prefix skips them. exclude = [ "~/.mycli-history", "~/.mycli.log", "~/.mycli-audit.log", ] # ~/.myclirc is not a credential end to end: it is the completion, prompt and # colour settings plus the user's [favorite_queries]. Note for a consumer that # a DSN written under [alias_dsn] *can* embed a password — the shape is # mysql://[user[:password]@][host][:port]/[dbname] — but the alias names are # chosen by the user, so a prefix rule has nothing stable to name, exactly as # in apps/pgcli.toml. That one is left to the consumer's own content scan. secret = [] # Parsed at startup; each invocation re-reads it. side_effect = false # No machine_lines: the file is prompt format, key bindings, colour scheme, # pager and completion settings — the things a user wants carried. Its default # paths (history_file, log_file) are written home-relative, so they say nothing # about one machine. [commands] format = 1 label = "Connect to MySQL" description = "Open the mycli prompt on a MySQL server, or run one statement and quit. The password is left out so it is not typed into the command line; mycli prompts or reads it from its config." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.source]] id = "src" kind = "help" url = "https://github.com/dbcli/mycli/blob/main/mycli/main.py" revision = "main (2026-10-27)" evidence = """'-h', '--hostname', help='Host address of the MySQL server.' '-P', help='Port number on the MySQL server.' '-u', '--user', '--username', help='User name to connect to the MySQL server.' '-S', metavar='PATH', help='Socket path to connect to the MySQL server.' '-D', '--database', help='Database or DSN to use for the connection.' '-d', help='DSN alias configured in the ~/.myclirc file, or a full DSN.' '-e', help='Execute command and quit.'""" [[commands.field]] id = "host" label = "Host" type = "string" option = ["--hostname", "-h"] sources = ["src"] [[commands.field]] id = "port" label = "Port" type = "integer" option = ["-P"] sources = ["src"] [[commands.field]] id = "user" label = "User" type = "string" option = ["--user", "--username", "-u"] sources = ["src"] [[commands.field]] id = "socket" label = "Unix socket" type = "path" path = { kind = "file", role = "input" } option = ["-S"] sources = ["src"] [[commands.field]] id = "database" label = "Database" type = "string" option = ["--database", "-D"] sources = ["src"] [[commands.field]] id = "dsn" label = "DSN alias" type = "string" option = ["-d"] sources = ["src"] [[commands.field]] id = "execute" label = "Run statement and quit" type = "string" option = ["-e"] sources = ["src"] [[commands.task]] id = "connect" label = "Connect to a server" fields = ["host", "port", "user", "database"] required = ["host"] [[commands.task]] id = "alias" label = "Connect by DSN alias" fields = ["dsn", "database"] required = ["dsn"] [[commands.group]] id = "basic" label = "Basic" fields = ["host", "port", "user", "database", "dsn"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["socket", "execute"]