Como inserir um novo usuário no MariaDb / Mysql através de um script?

0

Eu tenho um script que instala softwares em um novo SO Linux 16.10.

Digamos que o arquivo seja chamado de insert_app.txt.

Eu chamo este script assim:

# source  insert_app.txt.

Então os softwares são instalados em um modo não interativo.

Esta é uma parte que instala o MariaDb

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

Isso funciona bem. Depois de instalar o banco de dados eu preciso criar usuários e definir privilégios, assim:

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

Para fazer isso eu preciso esperar todos os softwares a serem instalados, então entre no banco de dados como mysql -uroot -pPassword, então eu corro o comando anterior para criar os usuários.

Minha pergunta é:

Existe uma maneira de colocar esses comandos no mesmo pipeline? Quer dizer, assim:

....

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...

Não está funcionando.

Alguma ajuda?

    
por zwitterion 22.11.2016 / 15:50

2 respostas

1

Foi assim que eu fiz em 16.04 ou 16.10 desde:

  • mariaDB após a instalação, se você não configurou mais nada, apenas concede acesso ao root. Então, você precisaria usar sudo para executá-lo. Com isto quero dizer (Assumindo que a senha é 'x'):

    sudo mysql -uroot -px
    

    Em vez de

    mysql -uroot -px
    

Agora, para executar a linha inteira, você faria o seguinte. No meu caso eu estou criando um usuário chamado 'cyrex' com uma senha 'x':

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

ou sem os parâmetros Usuário e Senha:

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

Depois de fazer isso, você pode testar fazendo o seguinte sem a parte do sudo:

mysql -ucyrex -px

e vai funcionar. Eu forneci uma imagem para que você possa ver a confusão desde que eu estou acostumado com o MySQL trabalhando sem ter que fazer isso, mas com MariaDB ele muda um pouco.

Você também pode alterar a senha e algumas opções executando

mysql_secure_installation ou mysql_setpermission , que pode ajudar na configuração das configurações padrão.

    
por Luis Alvarado 22.11.2016 / 16:07
1

tente o parâmetro -e do cliente mysql:

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;"

isso funcionaria mesmo com um comando:

mysql -uroot -pPsswrd -e "CREATE USER 'user1'@'localhost' IDENTIFIED BY 'psswordUser1'; GRANT ALL PRIVILEGES ON * . * TO 'user1'@'localhost'; FLUSH PRIVILEGES;"
    
por Phillip -Zyan K Lee- Stockmann 22.11.2016 / 15:53