Conceitos rápidos sobre MYSQL - Administração e Utilização
#### Administração ####
Ao terminar de instalar o mysql você precisar colocar uma senha de root para o
próprio, temos varias formas de fazer isso:
! Primeira
shell# mysql -u root mysql
mysql>SET PASSWORD FOR root@localhost=PASSWORD('senha_escolhida_por_voce');
! Segunda
shell# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('senha_escolhida_por_voce')
mysql> WHERE user='root';
mysql> FLUSH PRIVILEGES;
! Terceira
shell# mysqladmin -u root password senha_escolhida_por_voce
Adicionando mais usuarios:
! Adicionar um super usuario
shell# mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO zezinho@localhosst
mysql> IDENTIFIED BY 'senha' WITH GRANT OPTION;
!Adicionar um usuario com acesso de administração
shell# mysql -u root -p
mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost
mysql> IDENTIFIED BY 'senha' WITH GRANT OPTIONS;
! Adicionar usuario para um dominio
shell# mysql -u root -p
mysql> CREATE DATABASE dominio;
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> ON dominio.*
-> TO zezinho@"%.dominio.com.br"
-> IDENTIFIED BY 'senha';
Exemplos dos tipos de atribuição de conexão:
Host Usuário Descrição do tipo de conexão
'woody.debian.org' zezinho zezinho conectando de woody.debian.org
'woody.debian.org' '' qualquer usuario conectando de woody.debian.org
'%' zezinho zezinho conectando de qualquer host
'%' '' qualquer usuario conectando de qualquer host
'%.debian.org' zezinho zezinho conectando de qualquer host do dominio debian.org
'x.y.%' zezinho zezinho conectando de x.y.net, x.y.com, etc...
'10.10.10.3' zezinho zezinho conectando de host com ip 10.10.10.3
'10.10.10.%' zezinho zezinho conectando de qualquer ip da cladse 10.10.10.X
'10.10.10.0/255.255.255.0' zezinho zezinho conectando de qualquer subnet
Fazendo backup:
! Todos os banco de dados
shell# mysqldump --all-databases -u root -psenha > alldbs.sql
! Apenas de um banco de dados
shell# mysqldump --databases -u root -psenha db1 > db1.sql
Reparando uma tabela:
IMPORTANTE: Faça sempre um backup antes de fazer isso!
! Primeiro estágio - Checando suas tabelas
shell# myisamchk -s *.MYI (se voce tem pouco tempo)
shell# myisamchk -e -s *.MYI (se voce tem bastante tempo)
! Segundo estágio - Recuperação fácil
Irá remover as gravações incorretas e deletar as gravações do arquivo de informações e reconstruir
o arquivo principal. Se a forma abaixo falhar use myisamchk --safe-recorver que é um método mais antigo.
shell# myisamchk -r nome_da_tabela
! Terceiro estágio - Recuperação dificultada
Somente se os primeiros blocos de 16k de seu arquivos estejam corrompidos ou com informações incorretas
utilize isso. Neste caso é necessário criar um outro arquivo. E não se esqueça do backup.
shell# mysql nome_do_banco_dados
mysql> SET AUTOCOMMIT=1;
mysql> TRUNCATE TABLE nome_tabela;
mysql> quit
Se não conseguir usar o TRUNCATE use:
mysql> DELETE FROM nome_tabela;
Volte o backup para o novo arquivo, mais guarde uma copia em caso de não funcionar.
Volte ao estágio 2, que deverá funcionar agora.
No Mysql 4.0.2 você pode usar o REPAIR também.
#### Comandos do mysql, utilização ####
Criar banco de dados:
> CREATE DATABASE nome;
Usar banco de dados criado:
> USE nome_banco_dados;
Mostrar tabelas presentes em um banco de dados:
> SHOW TABLES;
Mostrar bancos de dados criados:
> SHOW DATABASES;
Mostrar estrutura de uma tabela:
> DESCRIBE nome_tabela;
Deletar todos os registros da tabela:
> DELETE FROM nome_tabela;
Deletar um registro da tabela:
> DELETE FROM nome_tabela WHERE campo='informacao';
Alterar tipo do campo da tabela:
> ALTER TABLE nome_tabela CHANGE campo campo TIPO NOT NULL;
ou
> ALTER TABLE nome_tabela MODIFY campo TIPO NOT NULL;
Atualizar registro do banco de dados:
> UPDATE nome_tabela SET campo=info WHERE campo='informacao';
Cadastrar registro no banco de dados:
> INSERT INTO nome_tabela (campos) VALUES (informacoes);
Deletar banco de dados:
> DROP DATABASE nome_banco_dados;
Deletar tabela:
> DROP TABLE nome_tabela;
Renomear tabela:
> RENAME TABLE db1.teste TO db2.cadastro;
Então a tabela teste do banco de dados db1 foi mudada para o banco de dados db2 com o nome de cadastro.
Criar Tabela:
> CREATE TABLE cadastro(campo tipo(tamanho) NOT NULL);
Selecionar todas informacoes:
> SELECT * FROM nome_tabela;
Selecionar por tipo:
> SELECT campo FROM nome_tabela;
Selecionar por ordem e organizacao de campo em maneira decrescente:
> SELECT * FROM nome_tabela ORDER BY campo DESC;
Selecionar os X ultimos valores por ordem de campo:
> SELECT * FROM nome_tabela ORDER BY campo LIMIT 5 DESC;
Onde X pode ser qualquer valor inteiro.
Selecionar uma palavra que comece com um X caracter:
> SELECT * FROM nome_tabela WHERE campo LIKE "X%";
Onde X pode ser qualquer caracter.
Selecionar uma palavra que termine com um X caracter:
> SELECT * FROM nome_table WHERE campo LIKE "%X";
Onde X pode ser qualquer caracter.
Selecionar uma palavra que tenha em qualquer parte do texto:
> SELECT * FROM nome_tabela WHERE campo LIKE "%X%";
Onde X pode ser qualquer caracter.
Selecionar palavras contendo um numero X de caracteres, usa-se o _ :
> SELECT * FROM nome_tabela WHERE campo LIKE "____";
Onde X pode ser qualquer valor inteiro, no exemplo usamos 4 underscore.
Inserindo informações de arquivos na tabela:
Copie o arquivo em extensao .txt separado com tabs para /var/lib/mysql/nome_db.
O arquivo pode ser formatado no Excel ou OpenofficeCalc.
> LOAD DATA LOCAL INFILE "arq.txt" INTO TABLE nome_tabela;
ou
> LOAD DATA INFILE "path/arq.txt" INTO TABLE nome_tabela;
A documentação completa pode ser encontrada no site http://www.mysql.com.
Ao terminar de instalar o mysql você precisar colocar uma senha de root para o
próprio, temos varias formas de fazer isso:
! Primeira
shell# mysql -u root mysql
mysql>SET PASSWORD FOR root@localhost=PASSWORD('senha_escolhida_por_voce');
! Segunda
shell# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('senha_escolhida_por_voce')
mysql> WHERE user='root';
mysql> FLUSH PRIVILEGES;
! Terceira
shell# mysqladmin -u root password senha_escolhida_por_voce
Adicionando mais usuarios:
! Adicionar um super usuario
shell# mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO zezinho@localhosst
mysql> IDENTIFIED BY 'senha' WITH GRANT OPTION;
!Adicionar um usuario com acesso de administração
shell# mysql -u root -p
mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost
mysql> IDENTIFIED BY 'senha' WITH GRANT OPTIONS;
! Adicionar usuario para um dominio
shell# mysql -u root -p
mysql> CREATE DATABASE dominio;
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> ON dominio.*
-> TO zezinho@"%.dominio.com.br"
-> IDENTIFIED BY 'senha';
Exemplos dos tipos de atribuição de conexão:
Host Usuário Descrição do tipo de conexão
'woody.debian.org' zezinho zezinho conectando de woody.debian.org
'woody.debian.org' '' qualquer usuario conectando de woody.debian.org
'%' zezinho zezinho conectando de qualquer host
'%' '' qualquer usuario conectando de qualquer host
'%.debian.org' zezinho zezinho conectando de qualquer host do dominio debian.org
'x.y.%' zezinho zezinho conectando de x.y.net, x.y.com, etc...
'10.10.10.3' zezinho zezinho conectando de host com ip 10.10.10.3
'10.10.10.%' zezinho zezinho conectando de qualquer ip da cladse 10.10.10.X
'10.10.10.0/255.255.255.0' zezinho zezinho conectando de qualquer subnet
Fazendo backup:
! Todos os banco de dados
shell# mysqldump --all-databases -u root -psenha > alldbs.sql
! Apenas de um banco de dados
shell# mysqldump --databases -u root -psenha db1 > db1.sql
Reparando uma tabela:
IMPORTANTE: Faça sempre um backup antes de fazer isso!
! Primeiro estágio - Checando suas tabelas
shell# myisamchk -s *.MYI (se voce tem pouco tempo)
shell# myisamchk -e -s *.MYI (se voce tem bastante tempo)
! Segundo estágio - Recuperação fácil
Irá remover as gravações incorretas e deletar as gravações do arquivo de informações e reconstruir
o arquivo principal. Se a forma abaixo falhar use myisamchk --safe-recorver que é um método mais antigo.
shell# myisamchk -r nome_da_tabela
! Terceiro estágio - Recuperação dificultada
Somente se os primeiros blocos de 16k de seu arquivos estejam corrompidos ou com informações incorretas
utilize isso. Neste caso é necessário criar um outro arquivo. E não se esqueça do backup.
shell# mysql nome_do_banco_dados
mysql> SET AUTOCOMMIT=1;
mysql> TRUNCATE TABLE nome_tabela;
mysql> quit
Se não conseguir usar o TRUNCATE use:
mysql> DELETE FROM nome_tabela;
Volte o backup para o novo arquivo, mais guarde uma copia em caso de não funcionar.
Volte ao estágio 2, que deverá funcionar agora.
No Mysql 4.0.2 você pode usar o REPAIR também.
#### Comandos do mysql, utilização ####
Criar banco de dados:
> CREATE DATABASE nome;
Usar banco de dados criado:
> USE nome_banco_dados;
Mostrar tabelas presentes em um banco de dados:
> SHOW TABLES;
Mostrar bancos de dados criados:
> SHOW DATABASES;
Mostrar estrutura de uma tabela:
> DESCRIBE nome_tabela;
Deletar todos os registros da tabela:
> DELETE FROM nome_tabela;
Deletar um registro da tabela:
> DELETE FROM nome_tabela WHERE campo='informacao';
Alterar tipo do campo da tabela:
> ALTER TABLE nome_tabela CHANGE campo campo TIPO NOT NULL;
ou
> ALTER TABLE nome_tabela MODIFY campo TIPO NOT NULL;
Atualizar registro do banco de dados:
> UPDATE nome_tabela SET campo=info WHERE campo='informacao';
Cadastrar registro no banco de dados:
> INSERT INTO nome_tabela (campos) VALUES (informacoes);
Deletar banco de dados:
> DROP DATABASE nome_banco_dados;
Deletar tabela:
> DROP TABLE nome_tabela;
Renomear tabela:
> RENAME TABLE db1.teste TO db2.cadastro;
Então a tabela teste do banco de dados db1 foi mudada para o banco de dados db2 com o nome de cadastro.
Criar Tabela:
> CREATE TABLE cadastro(campo tipo(tamanho) NOT NULL);
Selecionar todas informacoes:
> SELECT * FROM nome_tabela;
Selecionar por tipo:
> SELECT campo FROM nome_tabela;
Selecionar por ordem e organizacao de campo em maneira decrescente:
> SELECT * FROM nome_tabela ORDER BY campo DESC;
Selecionar os X ultimos valores por ordem de campo:
> SELECT * FROM nome_tabela ORDER BY campo LIMIT 5 DESC;
Onde X pode ser qualquer valor inteiro.
Selecionar uma palavra que comece com um X caracter:
> SELECT * FROM nome_tabela WHERE campo LIKE "X%";
Onde X pode ser qualquer caracter.
Selecionar uma palavra que termine com um X caracter:
> SELECT * FROM nome_table WHERE campo LIKE "%X";
Onde X pode ser qualquer caracter.
Selecionar uma palavra que tenha em qualquer parte do texto:
> SELECT * FROM nome_tabela WHERE campo LIKE "%X%";
Onde X pode ser qualquer caracter.
Selecionar palavras contendo um numero X de caracteres, usa-se o _ :
> SELECT * FROM nome_tabela WHERE campo LIKE "____";
Onde X pode ser qualquer valor inteiro, no exemplo usamos 4 underscore.
Inserindo informações de arquivos na tabela:
Copie o arquivo em extensao .txt separado com tabs para /var/lib/mysql/nome_db.
O arquivo pode ser formatado no Excel ou OpenofficeCalc.
> LOAD DATA LOCAL INFILE "arq.txt" INTO TABLE nome_tabela;
ou
> LOAD DATA INFILE "path/arq.txt" INTO TABLE nome_tabela;
A documentação completa pode ser encontrada no site http://www.mysql.com.
Será um ótimo local de consulta... Parabéns
01/06/2004 7:31am
(~20 anos atrás)
Poxa legal o artigo com as funcoes do mysql sempre eh bom ter em maos, mesmo que as funcoes mais simples mas sempre eh bom ter algo pra pode analizar!
27/05/2004 7:32am
(~20 anos atrás)