49 lines
2.1 KiB
Bash
Executable File
49 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
||
# 本地 MySQL 建库脚本:创建 allm,root 密码 yingping
|
||
# 连接串:mysql+aiomysql://root:yingping@localhost:3306/allm?charset=utf8mb4
|
||
#
|
||
# 使用前请确保 MySQL 已安装并启动:
|
||
# macOS: brew install mysql && brew services start mysql
|
||
# Ubuntu: sudo apt install mysql-server && sudo systemctl start mysql
|
||
|
||
set -e
|
||
|
||
DB_NAME="allm"
|
||
DB_USER="root"
|
||
DB_PASS="yingping"
|
||
HOST="127.0.0.1"
|
||
PORT="3306"
|
||
|
||
echo ">>> 检查 MySQL 是否可连接 (${HOST}:${PORT}) ..."
|
||
|
||
# 尝试无密码连接(首次安装)
|
||
if mysql -u "$DB_USER" -h "$HOST" -P "$PORT" -e "SELECT 1" 2>/dev/null; then
|
||
echo ">>> 使用 root 无密码连接成功,创建库并设置密码..."
|
||
mysql -u "$DB_USER" -h "$HOST" -P "$PORT" -e "
|
||
CREATE DATABASE IF NOT EXISTS \`${DB_NAME}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||
ALTER USER 'root'@'localhost' IDENTIFIED BY '${DB_PASS}';
|
||
ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY '${DB_PASS}';
|
||
FLUSH PRIVILEGES;
|
||
"
|
||
echo ">>> 数据库 ${DB_NAME} 已创建,root 密码已设为 ${DB_PASS}"
|
||
# 尝试使用 yingping 连接(可能已设置过)
|
||
elif mysql -u "$DB_USER" -p"${DB_PASS}" -h "$HOST" -P "$PORT" -e "SELECT 1" 2>/dev/null; then
|
||
echo ">>> 使用 root:yingping 连接成功,确保库存在..."
|
||
mysql -u "$DB_USER" -p"${DB_PASS}" -h "$HOST" -P "$PORT" -e "
|
||
CREATE DATABASE IF NOT EXISTS \`${DB_NAME}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||
"
|
||
echo ">>> 数据库 ${DB_NAME} 已就绪"
|
||
else
|
||
echo ">>> 无法连接 MySQL。请先安装并启动,且能以 root 登录(无密码或已知密码)。"
|
||
echo ">>> 手动执行:"
|
||
echo " mysql -u root -p -e \"CREATE DATABASE IF NOT EXISTS ${DB_NAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER USER 'root'@'localhost' IDENTIFIED BY '${DB_PASS}'; FLUSH PRIVILEGES;\""
|
||
exit 1
|
||
fi
|
||
|
||
echo ""
|
||
echo ">>> 在 .env 中设置:"
|
||
echo "DATABASE_URL=mysql+aiomysql://${DB_USER}:${DB_PASS}@localhost:${PORT}/${DB_NAME}?charset=utf8mb4"
|
||
echo ""
|
||
echo ">>> 然后执行迁移:"
|
||
echo "DATABASE_URL=\"mysql+aiomysql://${DB_USER}:${DB_PASS}@localhost:${PORT}/${DB_NAME}?charset=utf8mb4\" python -m alembic upgrade head"
|