Criando usuario e permissoes no mysql via shell script [RESOLVIDO]

1. Criando usuario e permissoes no mysql via shell script [RESOLVIDO]

Luis Renato
tharivol

(usa Fedora)

Enviado em 07/02/2019 - 17:45h

Olá, estou criando um script pra criar usuarios automaticamente no banco... porém sempre estou batendo com um erro

meu codigo original é



mysql=`which mysql`
DB_user="user"
db_m="user"
pass_user="xxxxxxx"
PASS_user="yyyyyy"
HOST="host.banco.com.br"
db="db.de.destino.com.br"
dbSenha="senhadb"
sqlFlush="flush privileges"

dbName=`cat /local/aonde/pega/o/nomedousuario.txt | grep dbname | cut -d[ -f3 | cut -d] -f1 | head -n1`
dbUser=`cat /local/aonde/pega/o/nomedobanco.txt | grep username | cut -d[ -f3 | cut -d] -f1 | head -n1`

sqlCriarUsuario="CREATE USER '$dbUser'@'localhost' IDENTIFIED BY '$dbSenha';"
sqlCriarDB="CREATE DATABASE IF NOT EXISTS $dbName;"
sqlPermissao1="GRANT ALL PRIVILEGES ON $dbName.* TO '$dbUser'@'localhost' IDENTIFIED BY '$dbSenha';"
sqlPermissao2="GRANT ALL PRIVILEGES ON $dbName.* TO '$dbUser'@'10.0.%' IDENTIFIED BY '$dbSenha';"
sqlPermissao3="GRANT ALL PRIVILEGES ON $dbName.* TO '$dbUser'@'xxx.xxx.xxx.xx' IDENTIFIED BY '$dbSenha';"

echo "Criando usuario, banco e setando permissoes"

$mysql --host=$db --user=$db_ma --password=$pass_user -e "${sqlCriarUsuario}"
$mysql --host=$db --user=$db_ma --password=$pass_user -e "$sqlCriarDB"
$mysql --host=$db --user=$db_m --password=$pass_user -e "${sqlPermissao1}"
$mysql --host=$db --user=$db_m --password=$pass_user -e "${sqlPermissao2}"
$mysql --host=$db --user=$db_m --password=$pass_user -e "${sqlPermissao3}${sqlFlush}
$mysql --host=$db --user=$db_m --password=$pass_user $dbName < bancoxxx.sql


tentei variacoes dos codigos mysql, mas sempre deu errado,

tentei

mysql -h$db -u$db_user -p$pass_user $dbName -e "${sqlPermissao1}"
e varias outros codigos, mas sempre dava erro

erros do tipo:


ERROR 1396 (HY000) at line 1: Operation CREATE USER failed for 'dbUser'@'localhost'
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''dbName'.* TO 'dbUser'@'localhost' IDENTIFIED BY 'dbSenha'' at line 1
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''dbName'.* TO 'dbUser'@'10.0.%' IDENTIFIED BY 'dbSenha'' at line 1
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''dbName'.* TO 'dbUser'@'xxx.xxx.xxx.xx' IDENTIFIED BY 'dbSenha'' at line 1


ou


ERROR 1396 (HY000) at line 1: Operation CREATE USER failed for 'dbName'@'localhost'


se alguem puder ajudar a arrumar a sintaxe de execução de mysql remota, agradeço!

**Obviamente troquei as senhas, hosts e users por variaveis p/ postar aki


  


2. Re: Criando usuario e permissoes no mysql via shell script [RESOLVIDO]

Luis Renato
tharivol

(usa Fedora)

Enviado em 08/02/2019 - 08:57h

any ideia?


3. Re: Criando usuario e permissoes no mysql via shell script [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 08/02/2019 - 14:57h


tharivol escreveu:

Olá, estou criando um script pra criar usuarios automaticamente no banco... porém sempre estou batendo com um erro

meu codigo original é



mysql=`which mysql`
DB_user="user"
db_m="user"
pass_user="xxxxxxx"
PASS_user="yyyyyy"
HOST="host.banco.com.br"
db="db.de.destino.com.br"
dbSenha="senhadb"
sqlFlush="flush privileges"

dbName=`cat /local/aonde/pega/o/nomedousuario.txt | grep dbname | cut -d[ -f3 | cut -d] -f1 | head -n1`
dbUser=`cat /local/aonde/pega/o/nomedobanco.txt | grep username | cut -d[ -f3 | cut -d] -f1 | head -n1`

sqlCriarUsuario="CREATE USER '$dbUser'@'localhost' IDENTIFIED BY '$dbSenha';"
sqlCriarDB="CREATE DATABASE IF NOT EXISTS $dbName;"
sqlPermissao1="GRANT ALL PRIVILEGES ON $dbName.* TO '$dbUser'@'localhost' IDENTIFIED BY '$dbSenha';"
sqlPermissao2="GRANT ALL PRIVILEGES ON $dbName.* TO '$dbUser'@'10.0.%' IDENTIFIED BY '$dbSenha';"
sqlPermissao3="GRANT ALL PRIVILEGES ON $dbName.* TO '$dbUser'@'xxx.xxx.xxx.xx' IDENTIFIED BY '$dbSenha';"

echo "Criando usuario, banco e setando permissoes"

$mysql --host=$db --user=$db_ma --password=$pass_user -e "${sqlCriarUsuario}"
$mysql --host=$db --user=$db_ma --password=$pass_user -e "$sqlCriarDB"
$mysql --host=$db --user=$db_m --password=$pass_user -e "${sqlPermissao1}"
$mysql --host=$db --user=$db_m --password=$pass_user -e "${sqlPermissao2}"
$mysql --host=$db --user=$db_m --password=$pass_user -e "${sqlPermissao3}${sqlFlush}
$mysql --host=$db --user=$db_m --password=$pass_user $dbName < bancoxxx.sql


tentei variacoes dos codigos mysql, mas sempre deu errado,

tentei

mysql -h$db -u$db_user -p$pass_user $dbName -e "${sqlPermissao1}"
e varias outros codigos, mas sempre dava erro

erros do tipo:


ERROR 1396 (HY000) at line 1: Operation CREATE USER failed for 'dbUser'@'localhost'
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''dbName'.* TO 'dbUser'@'localhost' IDENTIFIED BY 'dbSenha'' at line 1
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''dbName'.* TO 'dbUser'@'10.0.%' IDENTIFIED BY 'dbSenha'' at line 1
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''dbName'.* TO 'dbUser'@'xxx.xxx.xxx.xx' IDENTIFIED BY 'dbSenha'' at line 1


ou


ERROR 1396 (HY000) at line 1: Operation CREATE USER failed for 'dbName'@'localhost'


se alguem puder ajudar a arrumar a sintaxe de execução de mysql remota, agradeço!

**Obviamente troquei as senhas, hosts e users por variaveis p/ postar aki


Boa tarde Tharivol.
A sintaxe para criar usuário é:
CREATE USER user_account IDENTIFIED BY password;
A sua intenção é ler o arquivo txt e criar vários usuários?
Qual o conteúdo/formatação dos arquivos:
nomedousuario.txt
nomedobanco.txt

É um usuário e um nomedobanco por linha?
Variáveis entre aspas simples, não são resolvidas:
sqlCriarUsuario="CREATE USER '$dbUser'@'localhost' IDENTIFIED BY '$dbSenha';" 




4. Re: Criando usuario e permissoes no mysql via shell script

Luis Renato
tharivol

(usa Fedora)

Enviado em 08/02/2019 - 15:22h

msoliver escreveu:

Boa tarde Tharivol.
A sintaxe para criar usuário é:
CREATE USER user_account IDENTIFIED BY password;
A sua intenção é ler o arquivo txt e criar vários usuários?
Qual o conteúdo/formatação dos arquivos:
nomedousuario.txt
nomedobanco.txt

É um usuário e um nomedobanco por linha?
Variáveis entre aspas simples, não são resolvidas:
sqlCriarUsuario="CREATE USER '$dbUser'@'localhost' IDENTIFIED BY '$dbSenha';" 




Minha intenção eh executar o script e ele irá pegar o nome do usuario e o nome do banco dos arquivos nomedousuario.txt e nomedobanco.txt

e sim... cada execução do script é pego um nome de usuario e banco.

o conteudo dos arquivos é sigiloso, porém o cat feito retorna perfeitamente o nome do banco e do usuario... no caso o problema aparece na execução dos comandos mysql, antes o script funciona perfeitamente!

no panorama geral existem varias pastas com nomes diferentes, em cada pasta tem um nomedousuario.txt e nomedobanco.txt ... no caso p/ esse script eu defino por parametro em qual pasta eu quero que ele pegue o nomedousuario.txt e nomedobanco.txt p/ executar os comandos!



5. Re: Criando usuario e permissoes no mysql via shell script [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 09/02/2019 - 19:28h


Boa noite.
Veja a sintaxe dos comandos do 'mysql' executados pelo terminal:
http://thobias.org/doc/shell_bd.html#toc5



6. Re: Criando usuario e permissoes no mysql via shell script [RESOLVIDO]

Luis Renato
tharivol

(usa Fedora)

Enviado em 09/02/2019 - 21:58h

msoliver escreveu:


Boa noite.
Veja a sintaxe dos comandos do 'mysql' executados pelo terminal:
http://thobias.org/doc/shell_bd.html#toc5


Pelo que vi ele não tem os comandos de permissão p/ executar sem conectar no banco.... soh tem os comandos p/ serem executados dentro no banco!


7. Re: Criando usuario e permissoes no mysql via shell script [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 10/02/2019 - 13:35h


tharivol escreveu:

msoliver escreveu:


Boa noite.
Veja a sintaxe dos comandos do 'mysql' executados pelo terminal:
http://thobias.org/doc/shell_bd.html#toc5


Pelo que vi ele não tem os comandos de permissão p/ executar sem conectar no banco.... soh tem os comandos p/ serem executados dentro no banco!


Boa tarde.
A SINTAXE dos comandos no terminal, é:
prompt> mysql -u USUARIO -pSENHA -e "COMANDO_SQL;" base_de_dados 

Adapte a sua necessidade...


8. Re: Criando usuario e permissoes no mysql via shell script [RESOLVIDO]

Luis Renato
tharivol

(usa Fedora)

Enviado em 12/02/2019 - 10:59h

msoliver escreveu:

Boa tarde.
A SINTAXE dos comandos no terminal, é:
prompt> mysql -u USUARIO -pSENHA -e "COMANDO_SQL;" base_de_dados 

Adapte a sua necessidade...



de fato, esse comando supriu todas minhas necessidades

eu li parte do post e vi isso que ta no code... dai broxei ;/ ,

perdão por não ler tooodo ele

  prompt> mysql -u root mysql -p
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 3.23.49-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>
mysql> create database mysql_bash;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT usage ON *.* TO thobias@localhost IDENTIFIED BY 'senha';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT usage ON *.* TO thobias@'%' IDENTIFIED BY 'senha';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT CREATE, DROP, SELECT, INSERT, UPDATE, DELETE ON mysql_bash.* TO thobias@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT CREATE, DROP, SELECT, INSERT, UPDATE, DELETE ON mysql_bash.* TO thobias@'%';
Query OK, 0 rows affected (0.00 sec)

mysql>











Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts