{"id":18847,"library":"tengits-dbm","title":"tengits-dbm","description":"tengits-dbm (Database Manager CLI) is a command-line tool for MySQL connection management, migration, and data comparison. Current version is 1.0.12, released with moderate cadence, no changelog available. Key features: SSH tunnel support, AES-256-GCM encrypted password storage, connection pooling, schema/data comparison with multiple modes, and cross-server migration. Requires Node.js >=18.0.0, ships TypeScript types. Primarily aimed at developers and DevOps needing a scriptable, secure MySQL CLI with migration capabilities, differentiating by built-in SSH tunneling and encrypted credential storage.","status":"active","version":"1.0.12","language":"javascript","source_language":"en","source_url":null,"tags":["javascript","cli","database","mysql","ssh-tunnel","migration","connection-manager","typescript"],"install":[{"cmd":"npm install tengits-dbm","lang":"bash","label":"npm"},{"cmd":"yarn add tengits-dbm","lang":"bash","label":"yarn"},{"cmd":"pnpm add tengits-dbm","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"ESM-only package; TypeScript types included. Import the DBM class for programmatic use. CJS require() will fail because package is type module.","wrong":"const dbm = require('tengits-dbm'); const DBM = require('tengits-dbm').DBM;","symbol":"DBM CLI","correct":"import { DBM } from 'tengits-dbm'"},{"note":"ESM import for connection pool manager class; used for managing database connection pools. Not exported in CommonJS.","wrong":"const ConnectionPoolManager = require('tengits-dbm').ConnectionPoolManager;","symbol":"ConnectionPoolManager","correct":"import { ConnectionPoolManager } from 'tengits-dbm'"},{"note":"Utility function for encrypting passwords using AES-256-GCM. Only available via named ESM import.","wrong":"const encryptPassword = require('tengits-dbm').encryptPassword;","symbol":"encryptPassword","correct":"import { encryptPassword } from 'tengits-dbm'"},{"note":"Utility function for decrypting passwords. Must be used with the same master password as encryption.","wrong":"const decryptPassword = require('tengits-dbm').decryptPassword;","symbol":"decryptPassword","correct":"import { decryptPassword } from 'tengits-dbm'"}],"quickstart":{"code":"// Set master password (required for encrypted storage)\nprocess.env.DBM_MASTER_PASSWORD = 'your-secure-master-password';\n\nimport { DBM } from 'tengits-dbm';\n\nconst dbm = new DBM();\n\n// Add a direct connection\nawait dbm.addConnection('mydb', {\n  host: '192.168.1.100',\n  port: 3306,\n  user: 'root',\n  password: 'mypassword'\n});\n\n// List all connections\nconst connections = await dbm.listConnections();\nconsole.log(connections);\n\n// Test connection\nconst testResult = await dbm.testConnection('mydb');\nconsole.log(testResult ? 'Connection OK' : 'Connection failed');\n\n// List databases\nconst databases = await dbm.listDatabases('mydb');\nconsole.log(databases);\n\n// Execute SQL\nconst result = await dbm.executeSQL('mydb', {\n  database: 'mydatabase',\n  sql: 'SELECT * FROM users LIMIT 10'\n});\nconsole.log(result);\n\n// Remove connection\nawait dbm.removeConnection('mydb');","lang":"typescript","description":"Programmatic usage of DBM CLI: add connection, list, test, query databases, and remove connection with proper ESM imports."},"warnings":[{"fix":"export DBM_MASTER_PASSWORD='your-master-password' or set process.env.DBM_MASTER_PASSWORD in code before importing dbm.","message":"Master password must be set via environment variable DBM_MASTER_PASSWORD before any operation; otherwise encryption/decryption fails silently or throws.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use ESM import syntax: import { DBM } from 'tengits-dbm'","message":"CommonJS require is not supported; package is type: module. Using require will throw ERR_REQUIRE_ESM.","severity":"deprecated","affected_versions":">=1.0.0"},{"fix":"Prefer --ssh-key-file over --ssh-password for SSH connections.","message":"SSH password authentication may expose credentials in process list (e.g., via ps aux). Use SSH key authentication whenever possible.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use the ConnectionPoolManager to configure shorter timeout or increase max connections.","message":"Connection pool timeout default is 5 minutes; long-running queries may cause pool exhaustion if connections are not released properly.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Always backup target database before forced migration; use --backup flag.","message":"Database migration using --force overwrites target without confirmation; accidental data loss possible.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'-256':41 '1.0.12':27 '18.0.0':60 'ae':40 'aim':65 'avail':34 'built':82 'built-in':81 'cadenc':31 'capabl':78 'changelog':33 'cli':9,75,91 'command':13 'command-lin':12 'comparison':23,49 'connect':18,46,99 'connection-manag':98 'credenti':88 'cross':55 'cross-serv':54 'current':24 'data':22 'databas':7,92 'dbm':3,6 'develop':67 'devop':69 'differenti':79 'encrypt':43,87 'featur':36 'gcm':42 'javascript':90 'key':35 'line':14 'manag':8,19,100 'migrat':20,57,77,97 'mode':52 'moder':30 'multipl':51 'mysql':17,74,93 'need':70 'node.js':59 'password':44 'pool':47 'primarili':64 'releas':28 'requir':58 'schema/data':48 'scriptabl':72 'secur':73 'server':56 'ship':61 'ssh':37,84,95 'ssh-tunnel':94 'storag':45,89 'support':39 'tengit':2,5 'tengits-dbm':1,4 'tool':15 'tunnel':38,85,96 'type':63 'typescript':62,101 'version':25","created_at":"2026-04-25T07:40:27.381265+00:00","updated_at":"2026-04-25T07:40:27.381265+00:00","problems":[{"fix":"Change to ESM import: import { DBM } from 'tengits-dbm'; or set type: module in package.json.","cause":"Using CommonJS require() on an ESM-only package.","error":"ERR_REQUIRE_ESM: require() of ES Module /path/to/tengits-dbm/index.js not supported"},{"fix":"Set process.env.DBM_MASTER_PASSWORD = 'your-pass'; before using dbm.","cause":"Missing environment variable DBM_MASTER_PASSWORD before calling encryption-related functions.","error":"Error: Master password not set. Set DBM_MASTER_PASSWORD environment variable."},{"fix":"Use import { DBM } from 'tengits-dbm'; then const dbm = new DBM(); and call dbm.addConnection(...).","cause":"Using wrong import or not initializing DBM instance properly.","error":"TypeError: dbm.addConnection is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"dbm","cli_version":null,"type":"library","homepage":null,"github":null,"docs":null,"changelog":null,"pypi":null,"npm":"https://www.npmjs.com/package/tengits-dbm","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database","devops","auth-security"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-17","next_check":"2026-07-24","install_tag":null}}