Files
Nexus/scripts/show_grants.py
T
2026-07-08 22:31:31 +08:00

46 lines
1.2 KiB
Python

#!/usr/bin/env python3
"""Show MySQL grants for MYSQL_USER from .env."""
import asyncio
import os
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
def load_env() -> None:
env_path = ROOT / ".env"
if not env_path.exists():
return
for line in env_path.read_text(encoding="utf-8").splitlines():
line = line.strip()
if line and not line.startswith("#") and "=" in line:
k, v = line.split("=", 1)
os.environ.setdefault(k.strip(), v.strip())
async def main() -> int:
import aiomysql
load_env()
user = os.environ.get("MYSQL_USER", "Nexus")
host = os.environ.get("MYSQL_HOST", "127.0.0.1")
port = int(os.environ.get("MYSQL_PORT", "3306"))
password = os.environ.get("MYSQL_PASSWORD", "")
db = os.environ.get("MYSQL_DATABASE", "nexus")
conn = await aiomysql.connect(
host=host, port=port, user=user, password=password, db=db, connect_timeout=15
)
async with conn.cursor() as cur:
await cur.execute("SHOW GRANTS")
print(f"Grants for {user}@{host}:")
for row in await cur.fetchall():
print(" ", row[0])
conn.close()
return 0
if __name__ == "__main__":
raise SystemExit(asyncio.run(main()))