Diário de Viagens e Trabalhos do Pajé
26jan/105

Dicas e comandos básicos para MySQL e Postgres

Posted by Pajé

Já faz algum tempo que venho inserindo em um arquivo algumas dicas para os backends MySQl e Postgres, pois sempre esquecia algum detalhe e esse aquivo facilitou e facilita até hoje minha vida.
Depois de documentado no twiki da Cobra, agora segue para a comunidade.

Dicas e comandos MySQL
Criar usuário root.
mysql> grant all privileges on *.* to root@"%" with grant option;

Colocar senha no usuário root.
mysql> set password for root@localhost=password('XXXXXXXXXXX');

Gerar Dump de uma database especifica.
# mysqldump -u root -p mysql > mysql.sql

Restaurar Dump em uma database especifica.
# mysql -u root -p mysql < mysql.sql

Gerar Dump de todas as databases.
# mysqldump --all-databases -u root -p > mysql_all.sql

Restaurar Dump de todas as databases .
# mysql -u root -p < mysql_all.sqla

Criar base de dados.
# mysqladmin -u root -p create joomlaa
Ou:
# mysql -u root -p mysql> create joomla

Criar usuário simples.
# mysql gallery2 -u root -p -e "GRANT ALL ON basededados.* TO usuario@host IDENTIFIED BY 'senha'"
Ou:
mysql> GRANT ALL ON basededados.* TO usuario@host IDENTIFIED BY 'senha';
mysql> flush privileges;

Removendo uma base de dados.
mysql> drop database basededados;

Removendo um usuário.
mysql> use mysql;
mysql> delete from user where user='usuario';
mysql> fluash privileges;

Trocando senha de um usuário.
mysql> UPDATE user SET Password=PASSWORD('novasenha') WHERE user='usuario';
Ou:
# mysqladmin -u usuario -p novasenha

Tocar senha Admin do DotProject.
mysql> use dotprojectdb;
mysql> update users set user_password = md5('novasenha') where user_username = 'admin';

Liberando acessos para usuários (não localhost).
mysql> grant all privileges on basededados.* to usuario@'xxx.xxx.xxx.xxx';
mysql> flush privileges;

Para todos os Hosts:
mysql> grant all privileges on *.* to 'usuario'@'%' identified by 'senha';

Trocar senha de root caso tenha esquecido:
# /etc/init.d/mysql stop
# mysqld_safe --skip-grant-tables & echo "Update user set Password=PASSWORD('$ROOTMYSQL') Where User='root';" | mysql -u root mysql

# /etc/init.d/mysql stop
# /etc/init.d/mysql start

Dicas e comandos Postgres

Entrar com usuário postgres e entrar no ambiente pgsql .
# su portgres
$ pgsql

Criar usuário no banco.
$ createuser docmgruser

Criar uma base de dados.
$ createdb -h host -W -U usuario basededados
Ou:
$ createdb basededados

Logando em uma base passando parâmetro.
$ psql template1

Conectando em uma base de dados remotamente.
$ psql -h host -W -U usuario -d basededados

Rodar script em uma base especifica.
$ psql -h host -W -U usuario -d basededados -f script.pgsql

Gerar Dump de uma base especifica.
$ pg_dump -Fc basededados > basededadps.dump.gz
Ou:
$ pg_dump basededados > basededados.sql

Restaurar o Dump de uma base especifica.
$ pg_restore -Fc -d basededados < basededadps.dump.gz
Ou:
$ pg_restore -d basededados < basededados.sql

Gerando um Dump de todas as bases do Postgres.
$ pg_dumpall | gzip > all.gzl
Ou:
$ pg_dumpall > all.sql

Restaurando o Dump completo.
$ cat all.gzl | gunzip | psql template1
Ou:
$ psql template1 < all.sql

Restrições de acesso.
$ psql template1
template1=# alter user usuario NOCREATEUSER NOCREATEDB;
ALTER USER
template1=# \q

Alterar o dono de uma nova base de dados.
postgres=# ALTER DATABASE basededados OWNER TO usuario;

Trocar a senha de um usuário.
postgres=# ALTER USER usuario WITH PASSWORD 'novasenha';

Iniciar manualmente uma base Postgres manualmente passando parâmetros.
# /usr/local/pgsql/bin/pg_ctl -D /opt/postgres/data -l /var/log/postmaster.log start

Espero ter ajudado.