{"id":42356026,"url":"https://github.com/buonzz/graphmysql","last_synced_at":"2026-01-27T16:34:27.712Z","repository":{"id":226243543,"uuid":"768148969","full_name":"buonzz/graphmysql","owner":"buonzz","description":"Display MySQL objects in a graph","archived":false,"fork":false,"pushed_at":"2024-06-29T12:25:48.000Z","size":46,"stargazers_count":0,"open_issues_count":13,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-27T08:23:40.956Z","etag":null,"topics":["analysis","dba","mysql","tools","visualization"],"latest_commit_sha":null,"homepage":"http://www.darwinbiler.com/graphmysql/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/buonzz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-06T15:00:45.000Z","updated_at":"2024-03-14T15:58:21.000Z","dependencies_parsed_at":"2024-03-14T16:26:57.683Z","dependency_job_id":"81d414e2-3bff-4aea-a000-d4add01bdb58","html_url":"https://github.com/buonzz/graphmysql","commit_stats":null,"previous_names":["buonzz/graphmysql"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/buonzz/graphmysql","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buonzz%2Fgraphmysql","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buonzz%2Fgraphmysql/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buonzz%2Fgraphmysql/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buonzz%2Fgraphmysql/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/buonzz","download_url":"https://codeload.github.com/buonzz/graphmysql/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buonzz%2Fgraphmysql/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28816563,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T12:25:15.069Z","status":"ssl_error","status_checked_at":"2026-01-27T12:25:05.297Z","response_time":168,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analysis","dba","mysql","tools","visualization"],"created_at":"2026-01-27T16:34:26.845Z","updated_at":"2026-01-27T16:34:27.692Z","avatar_url":"https://github.com/buonzz.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"graphmysql\n=================\n\nRead and Display MySQL objects and their relationship in a force-directed graph.\n\n## Demo\n\nMySQL have a sample database called **sakila** and the demo below is the the result of analyzing the `information_schema`\n\n[Sakila DEMO](https://www.darwinbiler.com/graphmysql/)\n\n\n## Why \n\nThere are already tools that can read Entity-Relationship Diagrams and display the cardinality and foreign keys of each objects. The problem with ERD is once the number of tables got higher than 20 or so, displaying such diagram can be hard to read.\n\n`graphmysql` addresses this problem by only displaying the table names as circles, then the relationship as lines. This gives you a gist of which tables is connected to which in lets say a 100+ tables database. The interactivity it also provides natural way of \"weeding\" out unrelated tables by dragging away the node from the majority through force-directed graphs.\n\nThis tool is useful for the following use-cases:\n* Getting an overview of how each tables is all related in the big picture\n* Change management - if you drop a certain table, which ones will be affected\n* Partial Updating/Resetting of database - if the production data is very huge, grabbing an entire db dump might not be ideal, determining only related tables is more practical.\n* Share with backend developer the relationship of each tables (table names, foreign keys) in order to create Models in (MVC).\n* Non-technical tool to communicate business objects with stakeholders. \n\n## Requirements\n\n* MySQL Server 5.7 or higher\n* NodeJS 18 or higher\n\n\n\n\u003c!-- toc --\u003e\n* [Usage](#usage)\n* [Commands](#commands)\n\u003c!-- tocstop --\u003e\n# Usage\n\u003c!-- usage --\u003e\n```sh-session\n$ npm install -g graphmysql\n$ graphmysql COMMAND\nrunning command...\n$ graphmysql (--version)\ngraphmysql/1.0.3 darwin-x64 node-v20.11.0\n$ graphmysql --help [COMMAND]\nUSAGE\n  $ graphmysql COMMAND\n...\n```\n\u003c!-- usagestop --\u003e\n# Commands\n\u003c!-- commands --\u003e\n* [`graphmysql build GRAPH`](#graphmysql-build-graph)\n* [`graphmysql explore DATABASE HOST PASSWORD USERNAME`](#graphmysql-explore-database-host-password-username)\n* [`graphmysql help [COMMANDS]`](#graphmysql-help-commands)\n* [`graphmysql plugins`](#graphmysql-plugins)\n* [`graphmysql plugins:install PLUGIN...`](#graphmysql-pluginsinstall-plugin)\n* [`graphmysql plugins:inspect PLUGIN...`](#graphmysql-pluginsinspect-plugin)\n* [`graphmysql plugins:install PLUGIN...`](#graphmysql-pluginsinstall-plugin-1)\n* [`graphmysql plugins:link PLUGIN`](#graphmysql-pluginslink-plugin)\n* [`graphmysql plugins:uninstall PLUGIN...`](#graphmysql-pluginsuninstall-plugin)\n* [`graphmysql plugins reset`](#graphmysql-plugins-reset)\n* [`graphmysql plugins:uninstall PLUGIN...`](#graphmysql-pluginsuninstall-plugin-1)\n* [`graphmysql plugins:uninstall PLUGIN...`](#graphmysql-pluginsuninstall-plugin-2)\n* [`graphmysql plugins update`](#graphmysql-plugins-update)\n* [`graphmysql serve GRAPH PORT`](#graphmysql-serve-graph-port)\n\n## `graphmysql build GRAPH`\n\ngenerate a static html file that allows you to browse graph data\n\n```\nUSAGE\n  $ graphmysql build GRAPH\n\nARGUMENTS\n  GRAPH  Path to a JSON file that constains the graph data\n\nDESCRIPTION\n  generate a static html file that allows you to browse graph data\n\nEXAMPLES\n  $ graphmysql build ./graph.json\n```\n\n_See code: [src/commands/build.ts](https://github.com/buonzz/graphmysql/blob/v1.0.3/src/commands/build.ts)_\n\n## `graphmysql explore DATABASE HOST PASSWORD USERNAME`\n\nConnect to MySQL database and generate a json graph data.\n\n```\nUSAGE\n  $ graphmysql explore DATABASE HOST PASSWORD USERNAME\n\nARGUMENTS\n  DATABASE  MySQL database\n  HOST      MySQL Host\n  PASSWORD  MySQL password\n  USERNAME  MySQL username\n\nDESCRIPTION\n  Connect to MySQL database and generate a json graph data.\n\nEXAMPLES\n  $ graphmysql explore your_db 127.0.0.1 yourpassword youruser \u003e graph.json\n```\n\n_See code: [src/commands/explore/index.ts](https://github.com/buonzz/graphmysql/blob/v1.0.3/src/commands/explore/index.ts)_\n\n## `graphmysql help [COMMANDS]`\n\nDisplay help for graphmysql.\n\n```\nUSAGE\n  $ graphmysql help [COMMANDS] [-n]\n\nARGUMENTS\n  COMMANDS  Command to show help for.\n\nFLAGS\n  -n, --nested-commands  Include all nested commands in the output.\n\nDESCRIPTION\n  Display help for graphmysql.\n```\n\n_See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v6.0.14/src/commands/help.ts)_\n\n## `graphmysql plugins`\n\nList installed plugins.\n\n```\nUSAGE\n  $ graphmysql plugins [--json] [--core]\n\nFLAGS\n  --core  Show core plugins.\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  List installed plugins.\n\nEXAMPLES\n  $ graphmysql plugins\n```\n\n_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v4.2.6/src/commands/plugins/index.ts)_\n\n## `graphmysql plugins:install PLUGIN...`\n\nInstalls a plugin into the CLI.\n\n```\nUSAGE\n  $ graphmysql plugins add plugins:install PLUGIN...\n\nARGUMENTS\n  PLUGIN  Plugin to install.\n\nFLAGS\n  -f, --force    Run yarn install with force flag.\n  -h, --help     Show CLI help.\n  -s, --silent   Silences yarn output.\n  -v, --verbose  Show verbose yarn output.\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  Installs a plugin into the CLI.\n  Can be installed from npm or a git url.\n\n  Installation of a user-installed plugin will override a core plugin.\n\n  e.g. If you have a core plugin that has a 'hello' command, installing a user-installed plugin with a 'hello' command\n  will override the core plugin implementation. This is useful if a user needs to update core plugin functionality in\n  the CLI without the need to patch and update the whole CLI.\n\n\nALIASES\n  $ graphmysql plugins add\n\nEXAMPLES\n  $ graphmysql plugins add myplugin \n\n  $ graphmysql plugins add https://github.com/someuser/someplugin\n\n  $ graphmysql plugins add someuser/someplugin\n```\n\n## `graphmysql plugins:inspect PLUGIN...`\n\nDisplays installation properties of a plugin.\n\n```\nUSAGE\n  $ graphmysql plugins inspect PLUGIN...\n\nARGUMENTS\n  PLUGIN  [default: .] Plugin to inspect.\n\nFLAGS\n  -h, --help     Show CLI help.\n  -v, --verbose\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  Displays installation properties of a plugin.\n\nEXAMPLES\n  $ graphmysql plugins inspect myplugin\n```\n\n_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v4.2.6/src/commands/plugins/inspect.ts)_\n\n## `graphmysql plugins:install PLUGIN...`\n\nInstalls a plugin into the CLI.\n\n```\nUSAGE\n  $ graphmysql plugins install PLUGIN...\n\nARGUMENTS\n  PLUGIN  Plugin to install.\n\nFLAGS\n  -f, --force    Run yarn install with force flag.\n  -h, --help     Show CLI help.\n  -s, --silent   Silences yarn output.\n  -v, --verbose  Show verbose yarn output.\n\nGLOBAL FLAGS\n  --json  Format output as json.\n\nDESCRIPTION\n  Installs a plugin into the CLI.\n  Can be installed from npm or a git url.\n\n  Installation of a user-installed plugin will override a core plugin.\n\n  e.g. If you have a core plugin that has a 'hello' command, installing a user-installed plugin with a 'hello' command\n  will override the core plugin implementation. This is useful if a user needs to update core plugin functionality in\n  the CLI without the need to patch and update the whole CLI.\n\n\nALIASES\n  $ graphmysql plugins add\n\nEXAMPLES\n  $ graphmysql plugins install myplugin \n\n  $ graphmysql plugins install https://github.com/someuser/someplugin\n\n  $ graphmysql plugins install someuser/someplugin\n```\n\n_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v4.2.6/src/commands/plugins/install.ts)_\n\n## `graphmysql plugins:link PLUGIN`\n\nLinks a plugin into the CLI for development.\n\n```\nUSAGE\n  $ graphmysql plugins link PLUGIN\n\nARGUMENTS\n  PATH  [default: .] path to plugin\n\nFLAGS\n  -h, --help          Show CLI help.\n  -v, --verbose\n      --[no-]install  Install dependencies after linking the plugin.\n\nDESCRIPTION\n  Links a plugin into the CLI for development.\n  Installation of a linked plugin will override a user-installed or core plugin.\n\n  e.g. If you have a user-installed or core plugin that has a 'hello' command, installing a linked plugin with a 'hello'\n  command will override the user-installed or core plugin implementation. This is useful for development work.\n\n\nEXAMPLES\n  $ graphmysql plugins link myplugin\n```\n\n_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v4.2.6/src/commands/plugins/link.ts)_\n\n## `graphmysql plugins:uninstall PLUGIN...`\n\nRemoves a plugin from the CLI.\n\n```\nUSAGE\n  $ graphmysql plugins remove plugins:uninstall PLUGIN...\n\nARGUMENTS\n  PLUGIN  plugin to uninstall\n\nFLAGS\n  -h, --help     Show CLI help.\n  -v, --verbose\n\nDESCRIPTION\n  Removes a plugin from the CLI.\n\nALIASES\n  $ graphmysql plugins unlink\n  $ graphmysql plugins remove\n\nEXAMPLES\n  $ graphmysql plugins remove myplugin\n```\n\n## `graphmysql plugins reset`\n\nRemove all user-installed and linked plugins.\n\n```\nUSAGE\n  $ graphmysql plugins reset [--hard] [--reinstall]\n\nFLAGS\n  --hard       Delete node_modules and package manager related files in addition to uninstalling plugins.\n  --reinstall  Reinstall all plugins after uninstalling.\n```\n\n_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v4.2.6/src/commands/plugins/reset.ts)_\n\n## `graphmysql plugins:uninstall PLUGIN...`\n\nRemoves a plugin from the CLI.\n\n```\nUSAGE\n  $ graphmysql plugins uninstall PLUGIN...\n\nARGUMENTS\n  PLUGIN  plugin to uninstall\n\nFLAGS\n  -h, --help     Show CLI help.\n  -v, --verbose\n\nDESCRIPTION\n  Removes a plugin from the CLI.\n\nALIASES\n  $ graphmysql plugins unlink\n  $ graphmysql plugins remove\n\nEXAMPLES\n  $ graphmysql plugins uninstall myplugin\n```\n\n_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v4.2.6/src/commands/plugins/uninstall.ts)_\n\n## `graphmysql plugins:uninstall PLUGIN...`\n\nRemoves a plugin from the CLI.\n\n```\nUSAGE\n  $ graphmysql plugins unlink plugins:uninstall PLUGIN...\n\nARGUMENTS\n  PLUGIN  plugin to uninstall\n\nFLAGS\n  -h, --help     Show CLI help.\n  -v, --verbose\n\nDESCRIPTION\n  Removes a plugin from the CLI.\n\nALIASES\n  $ graphmysql plugins unlink\n  $ graphmysql plugins remove\n\nEXAMPLES\n  $ graphmysql plugins unlink myplugin\n```\n\n## `graphmysql plugins update`\n\nUpdate installed plugins.\n\n```\nUSAGE\n  $ graphmysql plugins update [-h] [-v]\n\nFLAGS\n  -h, --help     Show CLI help.\n  -v, --verbose\n\nDESCRIPTION\n  Update installed plugins.\n```\n\n_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v4.2.6/src/commands/plugins/update.ts)_\n\n## `graphmysql serve GRAPH PORT`\n\nRender Graph data to a simple HTTP Server.\n\n```\nUSAGE\n  $ graphmysql serve GRAPH PORT\n\nARGUMENTS\n  GRAPH  Path to a JSON file that constains the graph data\n  PORT   which port to serve the http server\n\nDESCRIPTION\n  Render Graph data to a simple HTTP Server.\n\nEXAMPLES\n  $ graphmysql serve ./graph.json 8086\n```\n\n_See code: [src/commands/serve/index.ts](https://github.com/buonzz/graphmysql/blob/v1.0.3/src/commands/serve/index.ts)_\n\u003c!-- commandsstop --\u003e\n\n### Sample database\n\nWe use https://github.com/sakiladb/mysql for testing purposes.\n\n```\ndocker run -d -p 3306:3306 --name mysql-sakila sakiladb/mysql:5.7\n```\n\n### dev\n\n```\nnpm run build\n./bin/run.js explore sakila 127.0.0.1 'p_ssW0rd' sakila \u003e graph.json\n./bin/run.js serve ./graph.json 8086\n./bin/run.js build ./graph.json \u003e graph.html\n```\n\n### deploy\n\nif non-npm\n```\nnpx oclif pack tarballs\n```\n\nvia npm\n```\nnpm version (major|minor|patch) # bumps version, updates README, adds git tag\nnpm publish\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuonzz%2Fgraphmysql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbuonzz%2Fgraphmysql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuonzz%2Fgraphmysql/lists"}