gpt4 book ai didi

mysql - 奇怪的 ubuntu bash 问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:48:20 25 4
gpt4 key购买 nike

我正在编写看起来像那样的 bash 脚本。这个想法是:创建脚本,它将创建 mysql 用户、数据库,并向该用户授予新创建的数据库的所有权限。

    SED=`which sed`
CURRENT_DIR=`dirname $0`

if [ -z $1 ]; then
echo "No domain name given"
exit 1
fi
DOMAIN=$1

# check the domain is valid!
PATTERN="^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$";
if [[ "$DOMAIN" =~ $PATTERN ]]; then
DOMAIN=`echo $DOMAIN | tr '[A-Z]' '[a-z]'`
echo "Creating hosting for:" $DOMAIN
else
echo "invalid domain name"
exit 1
fi

echo "Do you want to create MySQL DB for Website (Y/n)?"
read CREATEDB

if [[ ( $CREATEDB == "y" ) || ( -z "$CREATEDB" ) ]]; then
echo "Enter MySQL root login (leave blank for default value - root):"
read MYSQLLOGIN
if [ -z "$MYSQLLOGIN" ]; then
MYSQLLOGIN="root"
fi
echo "Enter MySQL root PASS:"
read MYSQLROOTPASS
if [ -z "$MYSQLROOTPASS" ]; then
echo "No way without pass"
exit 1
fi
echo "Enter DB name (leave blank for default value - username_db):"
read MYSQLDB
if [ -z "$MYSQLDB" ]; then
MYSQLDB=$USERNAME"_db"
fi
echo "Enter password for newly created MySQL user (!ONLY if you have pwgen - sudo apt-get install pwgen! leave blank for auto password creation):"
read MYSQLPASS
if [ -z "$MYSQLPASS" ]; then
MYSQLPASS=$(pwgen -acn 10 1)
fi
mysql -h localhost -u $MYSQLLOGIN -p$MYSQLROOTPASS;
mysql> CREATE USER $USERNAME@'localhost' IDENTIFIED BY $MYSQLPASS;
mysql> create database $MYSQLDB;
mysql> grant usage on *.* to $USERNAME@localhost identified by $MYSQLPASS;
mysql> grant all privileges on $MYSQLDB.* to $USERNAME@localhost ;
else
exit 1
fi

echo -e "\nSite Created for $DOMAIN with PHP support\n Domain: "$DOMAIN"\n MySQL DB Name: "$MYSQLDB"\nMySQL Username : Pass"$USERNAME" : "$MYSQLPASS ;

我做错了什么?出现以下错误:

enter image description here

最佳答案

错误在被高亮显示的行中:

    if[$MYSQLDB==""]; then

您需要在 [, ]== 运算符周围留有空格,例如:

    if [ $MYSQLDB == "" ]; then

其他地方也存在同样的问题。例如,你说:

if [$CREATEDB == "y"]; then
if[$MYSQLLOGIN==""]; then
if[$MYSQLPASS==""]; then

此外,以下内容将不起作用:

mysql -h localhost -u $MYSQLLOGIN -p$MYSQLROOTPASS;
mysql> CREATE USER $USERNAME@'localhost' IDENTIFIED BY $MYSQLPASS;
mysql> create database $MYSQLDB;
mysql> grant usage on *.* to $USERNAME@localhost identified by $MYSQLPASS;
mysql> grant all privileges on $MYSQLDB.* to $USERNAME@localhost ;

您需要使用 heredoc .

关于mysql - 奇怪的 ubuntu bash 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19343745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com