如何通过脚本在 MariaDb/Mysql 中插入新用户?

如何通过脚本在 MariaDb/Mysql 中插入新用户?

我有一个在新的 Linux OS 16.10 中安装软件的脚本。

假设该文件名为 insert_app.txt。

我这样调用这个脚本:

# source  insert_app.txt.

然后以非交互模式安装软件。

这是安装 MariaDb 的部分

sudo apt-get update
sudo apt-get install -y mariadb-server

效果很好。安装数据库后,我需要创建用户并设置权限,如下所示:

CREATE USER 'user1'@'localhost' IDENTIFIED BY 'psswordUser1';
GRANT ALL PRIVILEGES ON * . * TO 'user1'@'localhost';
FLUSH PRIVILEGES;

为此,我需要等待所有软件安装完毕,然后进入数据库,如 mysql -uroot -pPassword,然后运行前面的命令来创建用户。

我的问题是:

有没有办法把这些命令放在同一个管道中?我的意思是,像这样:

....

sudo apt-get update
sudo apt-get install -y mariadb-server
mysql -uroot -pPsswrd
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'psswordUser1';
GRANT ALL PRIVILEGES ON * . * TO 'user1'@'localhost';
FLUSH PRIVILEGES;

...
COntinue install the softwares...

它不起作用。

一些帮助?

答案1

这是我在 16.04 或 16.10 上执行的操作,因为:

  • mariaDB 安装后,如果您没有配置任何其他内容,它只会授予 root 访问权限。因此您需要使用sudo来运行它。我的意思是(假设密码是“x”):

    sudo mysql -uroot -px
    

    代替

    mysql -uroot -px
    

现在要运行整行,您需要执行以下操作。 在我的例子中,我创建了一个名为“cyrex”的用户,密码为“x”:

 sudo mysql -uroot -px -e "CREATE USER 'cyrex'@'localhost' IDENTIFIED BY 'x'; GRANT ALL PRIVILEGES ON *.* TO 'cyrex@localhost'; FLUSH PRIVILEGES;"

或者不带用户和密码参数:

 sudo mysql -e "CREATE USER 'cyrex'@'localhost' IDENTIFIED BY 'x'; GRANT ALL PRIVILEGES ON *.* TO 'cyrex@localhost'; FLUSH PRIVILEGES;"

完成此操作后,您可以通过执行以下操作(不带 sudo 部分)进行测试:

mysql -ucyrex -px

就可以正常工作了。我提供了一张图片,以便您看到混乱,因为我习惯于使用 MySQL 而无需这样做,但使用 MariaDB 时情况略有不同。

在此处输入图片描述

您还可以通过运行以下命令更改密码和一些选项

mysql_secure_installation或者mysql_setpermission可以帮助配置默认设置。

答案2

尝试-emysql客户端的参数:

mysql -uroot -pPsswrd -e "CREATE USER 'user1'@'localhost' IDENTIFIED BY 'psswordUser1';"
mysql -uroot -pPsswrd -e "GRANT ALL PRIVILEGES ON * . * TO 'user1'@'localhost';"
mysql -uroot -pPsswrd -e "FLUSH PRIVILEGES;"

即使只用一个命令也可以工作:

mysql -uroot -pPsswrd -e "CREATE USER 'user1'@'localhost' IDENTIFIED BY 'psswordUser1'; GRANT ALL PRIVILEGES ON * . * TO 'user1'@'localhost'; FLUSH PRIVILEGES;"

相关内容