id = "mysqlworkbench" name = "MySQL Workbench" homepage = "https://www.mysql.com/products/workbench/" description = "a unified visual tool for database architects, developers, and DBAs" icon = "SimpleIcons:mysql" # The Linux package installs `mysql-workbench`; on macOS the app is # MySQLWorkbench.app, whose executable is MySQLWorkbench and whose bundle # identifier is com.oracle.workbench.MySQLWorkbench (the Homebrew cask # `mysqlworkbench` zaps that identifier's preferences, caches and saved state — # https://formulae.brew.sh/api/cask/mysqlworkbench.json). Binary names are # preferred over the identifier, so both executables are listed. executables = ["mysql-workbench", "MySQLWorkbench"] [dotfiles] # https://dev.mysql.com/doc/workbench/en/wb-configuring-files.html gives the # user configuration base path per operating system: # # Windows %AppData%\MySQL\Workbench\ # macOS ~username/Library/Application Support/MySQL/Workbench/ # Linux ~username/.mysql/workbench/ # # The Windows and macOS spellings are the two halves of [appData]; Linux is # somewhere else entirely (a dotdir in the home directory, not an XDG # directory), so it gets its own lines. On a Linux machine [appData] resolves # to ~/.config/MySQL/Workbench, which Workbench never writes and a consumer # simply does not find. # # The same page names the files: connections.xml ("saved MySQL server # connection information, as seen on the home screen tab"), server_instances.xml # ("stores your MySQL server information, as it relates to your MySQL # connections"), wb_options.xml ("stores your preferences, both configured and # default") and snippets/ ("saved SQL snippets are stored here"). They are # listed one by one rather than as a directory, so that the password vault # described below is not swept up with them. paths = [ "[appData]/MySQL/Workbench/connections.xml", "[appData]/MySQL/Workbench/server_instances.xml", "[appData]/MySQL/Workbench/wb_options.xml", "[appData]/MySQL/Workbench/snippets/", "~/.mysql/workbench/connections.xml", "~/.mysql/workbench/server_instances.xml", "~/.mysql/workbench/wb_options.xml", "~/.mysql/workbench/snippets/", ] # sql_history/ ("queries executed in MySQL Workbench are stored here") and log/ # ("log files include MySQL Workbench startup information") are the two # directories from that table that are records rather than settings. Neither is # inside a path listed above, so there is nothing to carve out of what is; both # spellings are named so a consumer syncing the whole Workbench directory skips # them on either platform. exclude = [ "[appData]/MySQL/Workbench/sql_history/", "[appData]/MySQL/Workbench/log/", "~/.mysql/workbench/sql_history/", "~/.mysql/workbench/log/", ] # https://dev.mysql.com/doc/workbench/en/wb-mysql-connections-vault.html: on # macOS the vault "is implemented using the Secure Keychain" and on Linux # through libsecret, so on those two the passwords are not on disk here at all. # On Windows the vault is "an encrypted file in the MySQL Workbench data # directory" — the same directory as connections.xml — "encrypted using Windows # API based on the current user", so it cannot be decrypted on another # computer. Oracle does not publish that file's name, which is why the paths # above name each configuration file instead of the directory: whatever the # vault is called, it is not synced. secret = [] # No machine_lines: connections.xml is host names, ports and user names, which # is what a user wants on their next machine, and wb_options.xml is # preferences. Both are XML, and the schema's `format` is toml, yaml or json, # so a per-key carve-out could not be written even where one was wanted.