Skip to main content

MySQL tool for opsmate

Project description

opsmate-tool-mysql

opsmate-tool-mysql is a tool for Opsmate that allows you to interact with MySQL databases with the assistance of a LLM.

Should I use this tool?

:warning: This is an early prototype and the protocol is yet to be finalized. :warning:

Here is the guide to help you to make decisions about whether you should use this tool at the moment:

Situation Recommendation
I am not sure if this tool is mature enough for my use case Don't use it
I want this tool to perform all the production db administration tasks for me Absolutely not
There is a pressing production issue that needs to be resolved urgently, this mysql plugin might be useful Seriously NO
I really want to use this tool but I'm worried about PII and data privacy implications Don't use it
I have a non-production database and I want to test this tool Maybe

Installation

Change directory to this folder and run:

opsmate install opsmate-tool-mysql

Usage

First, start the MySQL server using docker-compose: Note we have a x-for-pet database schema and sample data in the fixtures/mydb.sql file.

docker compose -f fixtures/docker-compose.yml up

Then you can test the tool by running:

opsmate chat --runtime mysql \
  --runtime-mysql-password my-secret-pw \
  --runtime-mysql-host localhost \
  --tools MySQLTool

Implementation Details

The tool is implemented in the mysql/tool.py file.

The tool uses the MySQLRuntime class to connect to the MySQL server, which is implements the Runtime interface. It is implemented in the mysql/runtime.py file.

In the pyproject.toml file you can find the entry points for the tool and the runtime:

[project.entry-points."opsmate.tools"]
tool = "mysql.tool:MySQLTool"

[project.entry-points."opsmate.runtime.runtimes"]
runtime = "mysql.runtime:MySQLRuntime"

This is to make sure that the tools are "autodiscovered" by Opsmate on startup. To verify this you can run the following commands:

# to verify the mysql tool is autodiscovered
opsmate list-tools | grep -i mysql
│ MySQLTool            MySQL tool
# to verify the mysql runtime is autodiscovered
opsmate chat --help | grep -i mysql
  --runtime-mysql-timeout INTEGER
                                  The timeout of the MySQL server (env:
                                  RUNTIME_MYSQL_TIMEOUT)  [default: 120]
  --runtime-mysql-charset TEXT    The charset of the MySQL server (env:
                                  RUNTIME_MYSQL_CHARSET)  [default: utf8mb4]
  --runtime-mysql-database TEXT   The database of the MySQL server (env:
                                  RUNTIME_MYSQL_DATABASE)
  --runtime-mysql-password TEXT   The password of the MySQL server (env:
                                  RUNTIME_MYSQL_PASSWORD)  [default: ""]
  --runtime-mysql-user TEXT       The user of the MySQL server (env:
                                  RUNTIME_MYSQL_USER)  [default: root]
  --runtime-mysql-port INTEGER    The port of the MySQL server (env:
                                  RUNTIME_MYSQL_PORT)  [default: 3306]
  --runtime-mysql-host TEXT       The host of the MySQL server (env:
                                  RUNTIME_MYSQL_HOST)  [default: localhost]

Uninstall

opsmate uninstall -y opsmate-tool-mysql

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opsmate_tool_mysql-0.1.1a0.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

opsmate_tool_mysql-0.1.1a0-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file opsmate_tool_mysql-0.1.1a0.tar.gz.

File metadata

  • Download URL: opsmate_tool_mysql-0.1.1a0.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for opsmate_tool_mysql-0.1.1a0.tar.gz
Algorithm Hash digest
SHA256 1653c85346b70b2908cd6ec1ad7eea03b37a12991fe99b6195ef178c372ec649
MD5 31e89e80c7c3922a58d14c82a2d0354e
BLAKE2b-256 83b85a73cbd1e0e894cb974d7b863d471d1fabf8a35e66fe341500d95be5820c

See more details on using hashes here.

Provenance

The following attestation bundles were made for opsmate_tool_mysql-0.1.1a0.tar.gz:

Publisher: publish.yml on jingkaihe/opsmate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opsmate_tool_mysql-0.1.1a0-py3-none-any.whl.

File metadata

File hashes

Hashes for opsmate_tool_mysql-0.1.1a0-py3-none-any.whl
Algorithm Hash digest
SHA256 74e74d1342bf37fe743f3abf9ab517bf4be7c0735c4741679b714e3d4bc2aa06
MD5 b391f083ab03677ab9e7aafac3144e3a
BLAKE2b-256 72c46ae9ad49f771e37f07f382d61a16d098d1172e033b2663b401e9d9917f3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for opsmate_tool_mysql-0.1.1a0-py3-none-any.whl:

Publisher: publish.yml on jingkaihe/opsmate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page