yao/unit/service.sh
2021-09-06 19:38:39 +08:00

84 lines
No EOL
3.3 KiB
Bash
Executable file

#!/bin/bash
StartMySQL5.7() {
docker pull mysql:5.7.25
docker run --name=mysql5.7 -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.25 --default-authentication-plugin=mysql_native_password
Waiting "mysql5.7" "Version: '5.7.25' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)" 30
docker logs mysql5.7
docker exec mysql5.7 mysql -uroot -p123456 -e "CREATE DATABASE xun CHARACTER SET utf8 COLLATE utf8_general_ci"
docker exec mysql5.7 mysql -uroot -p123456 -e "CREATE USER xun@'%' IDENTIFIED BY '123456'"
docker exec mysql5.7 mysql -uroot -p123456 -e "GRANT SELECT ON xun.* TO 'xun'@'%'";
}
StartMySQL8.0() {
docker pull mysql:8.0.26
docker run --name=mysql8.0 -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.26 --default-authentication-plugin=mysql_native_password
Waiting "mysql8.0" "Version: '8.0.26' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL" 30
docker logs mysql8.0
docker exec mysql8.0 mysql -uroot -p123456 -e "CREATE DATABASE xun CHARACTER SET utf8 COLLATE utf8_general_ci"
docker exec mysql8.0 mysql -uroot -p123456 -e "CREATE USER xun@'%' IDENTIFIED BY '123456'"
docker exec mysql8.0 mysql -uroot -p123456 -e "GRANT SELECT ON xun.* TO 'xun'@'%'";
}
StartMySQL5.6() {
docker pull mysql:5.6.51
docker run --name=mysql5.6 -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.51 --default-authentication-plugin=mysql_native_password
Waiting "mysql5.6" "Version: '5.6.51' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)" 30
docker logs mysql5.6
docker exec mysql5.6 mysql -uroot -p123456 -e "CREATE DATABASE xun CHARACTER SET utf8 COLLATE utf8_general_ci"
docker exec mysql5.6 mysql -uroot -p123456 -e "CREATE USER xun@'%' IDENTIFIED BY '123456'"
docker exec mysql5.6 mysql -uroot -p123456 -e "GRANT SELECT ON xun.* TO 'xun'@'%'";
}
StartPostgres9.6() {
docker pull postgres:9.6
docker run --name=postgres9.6 -d -p 5432:5432 -e POSTGRES_PASSWORD=123456 postgres:9.6
Waiting "postgres9.6" "PostgreSQL init process complete; ready for start up" 30
docker logs postgres9.6
docker exec postgres9.6 su - postgres -c "psql -c 'CREATE DATABASE xun'"
docker exec postgres9.6 su - postgres -c "psql -c \"CREATE USER xun WITH PASSWORD '123456'\""
docker exec postgres9.6 su - postgres -c "psql -c 'GRANT ALL PRIVILEGES ON DATABASE \"xun\" to xun;'"
}
IsReady() {
name=$1
checkstr=$2
res=$(docker logs $1 2>&1 | grep "$checkstr")
if [ "$res" == "" ]; then
echo "0"
else
echo "1"
fi
}
Waiting() {
name=$1
checkstr=$2
let timeout=$3
echo -n "Starting $name ."
isready=$(IsReady "$name" "$checkstr")
timing=0
while [ "$isready" == "0" ];
do
sleep 1
isready=$(IsReady "$name" "$checkstr")
let timing=${timing}+1
echo -n "."
if [ $timing -eq $timeout ]; then
echo " failed. timout($timeout)" >&2
docker logs $name >&2
exit 1
fi
done
echo " done"
}
command=$1
case $command in
mysql8.0) StartMySQL8.0;;
mysql5.7) StartMySQL5.7;;
mysql5.6) StartMySQL5.6;;
postgres9.6) StartPostgres9.6;;
*) $(echo "please input command" >&2) ;;
esac