Resumo do MySQL
apt-get update
apt-get upgrade
apt-get -y install mysql-server mysql-client
Criar bancos
Criar usuários com direitos somente ao banco
Cada site deve ter um usuário exclusivo e um banco onde tem plenos poderes.
Para permitir acesso de host externo
nano /etc/mysql/my.cnf
#bind-address = 127.0.0.1
Descomentado aceita somente conexão local
Checar se rede está habilitada:
netstat -tap | grep mysql
Hardening e Tuninng do MySQL
Execute o seguinte comando e siga os passos recomendados:
mysql_secure_installation
Resumo
E criar um usuário para acesso remoto e plenos poderes, já que o root deve estar restrito aos acessos locais (pelo mysql_secure_installation)
EVITAR A CRIAÇÃO DESTE USUÁRIO
mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY 'senha' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Criar usuário para o site em Joomla com poderes apenas no localhost
banco - portal
usuário - portal
mysql -u root -p
create database portal;
use portal;
GRANT ALL PRIVILEGES ON portal.* TO portal@localhost IDENTIFIED BY 'senha' WITH GRANT OPTION;
show processList;
create database sic;
GRANT ALL PRIVILEGES ON sic.* TO sic@localhost IDENTIFIED BY 'senha' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Liberando apenas para 192.168.0.201 (web)
mysql -u root -p
create database portal;
GRANT ALL PRIVILEGES ON portal.* TO Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo. IDENTIFIED BY 'senha' WITH GRANT OPTION;
Outro
GRANT ALL PRIVILEGES ON portal.* TO Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo. IDENTIFIED BY 'senha' WITH GRANT OPTION;
\q
service mysql restart
Privilégios:
*.* - Privilégio grobal. Todos os bancos (*) e todas as tabelas de todos os bancos (.*)
db.* - Todas as tabelas do banco db
db.tb - Somente a tabela tb do banco db
Acesso com o uso do coringa (%):
Exemplos:
... TO remoto@"%.mysqlbrasil.com.br"
... TO remoto@"200.236.13.%"
... TO " "@"%mysqlbrasil.com.br"
/etc/init.d/mysql restart
Mostrar estrutura de tabela
use banco
describe tabela;
Mostrar privilégios
use banco
show privileges;
Mostrar privilégios de um usuário
SHOW GRANTS FOR teste@localhost;
Remover usuário
DELETE FROM mysql.user WHERE user="teste" AND host="localhost";
FLUSH PRIVILEGES;
Alterar o password de determinado usuário:
set password for 'root'@'localhost'=password('novopassword');
Importar script para banco
mysql -h servidor -u usuário -p senha database_name < banco.sql
-h servidor: geralmente localhost. Dependendo do lugar, coloca-se o ip:porta. Ex.: -h localhost
-u usuário: usuário que manda no seu banco. Ex.: -u root
-p senha: precisa exemplificar não né? :P
database_name: o nome do banco que vai receber os dados sql.
banco.sql: arquivo que foi previamente feito o dump.
Exportar banco para script
mysqldump -u root -p --opt database_name > banco.sql
Privilégios
Criando outro super usuário para o mysql
mysql -u root -p
use mysql;
GRANT ALL PRIVILEGES ON *.localhost TO dnocs@localhost IDENTIFIED BY 'dnocs.devel' WITH GRANT OPTION;
flush privileges;
exit;
Criar usuário restrito para site com joomla
Criar banco tendo como dono o usuário acima
host - 10.0.0.60
banco - portaldev
usuario - portaldev
senha - portaldev
mysql -u root -p
create database portaldev;
use portaldev;
GRANT ALL PRIVILEGES ON portaldev.* TO portaldev@localhost IDENTIFIED BY 'portaldev' WITH GRANT OPTION;
Comments fornecido por CComment