MySQL é um sistema de gerenciamento de banco de dados popular usado para aplicações web e de servidor. No entanto, o MySQL não está mais nos repositórios do CentOS e o MariaDB se tornou o sistema de banco de dados padrão oferecido. O MariaDB é considerado um substituto do MySQL e seria suficiente se você precisasse apenas de um sistema de banco de dados em geral. Consulte nosso guia MariaDB no CentOS 7 para obter instruções de instalação.
Se você preferir o MySQL, este guia apresentará como instalá-lo, configurá-lo e gerenciá-lo em um Linode executando o CentOS 7.
Grandes bancos de dados MySQL podem exigir uma quantidade considerável de memória. Por esta razão, recomendamos o uso de um High Memory Linode para tais configurações.
Observação Este guia foi escrito para um usuário não root. Comandos que requerem privilégios elevados são prefixados comsudo
. Se você não estiver familiarizado com osudo
comando, você pode verificar nosso guia de usuários e grupos.
Antes de começar
-
Certifique-se de ter seguido os guias de Introdução e Protegendo seu Servidor e que o nome de host do Linode está definido.
Para verificar seu nome de host, execute:
hostname hostname -f
O primeiro comando deve mostrar seu nome de host curto e o segundo deve mostrar seu nome de domínio totalmente qualificado (FQDN).
-
Atualize seu sistema:
sudo yum update
-
Você precisará dewget
para completar este guia. Pode ser instalado da seguinte forma:
yum install wget
Instalar o MySQL
O MySQL deve ser instalado a partir do repositório da comunidade.
-
Baixe e adicione o repositório e, em seguida, atualize.
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm yum update
-
Instale o MySQL como de costume e inicie o serviço. Durante a instalação, você será perguntado se deseja aceitar os resultados da verificação GPG do arquivo .rpm. Se não ocorrer nenhum erro ou incompatibilidade, digitey
.
sudo yum install mysql-server sudo systemctl start mysqld
O MySQL será vinculado ao localhost (127.0.0.1) por padrão. Consulte nosso guia de acesso remoto MySQL para obter informações sobre como se conectar a seus bancos de dados usando SSH.
Observação Permitir acesso irrestrito ao MySQL em um IP público não é recomendado, mas você pode alterar o endereço em que ele escuta modificando obind-address
parâmetro em/etc/my.cnf
. Se você decidir vincular o MySQL ao seu IP público, você deve implementar regras de firewall que só permitem conexões de endereços IP específicos.
Reforçar o servidor MySQL
-
Execute amysql_secure_installation
script para resolver vários problemas de segurança em uma instalação padrão do MySQL.
sudo mysql_secure_installation
Você terá a opção de alterar a senha de root do MySQL, remover contas de usuários anônimos, desabilitar logins de root fora do localhost e remover bancos de dados de teste. É recomendável que você responda
yes
a essas opções. Você pode ler mais sobre o script no Manual de Referência do MySQL. Observação
Se o MySQL 5.7 foi instalado, você precisará da senha temporária que foi criada durante a instalação. Esta senha é anotada no/var/log/mysql.log
arquivo, e pode ser encontrado rapidamente usando o seguinte comando.
sudo grep 'temporary password' /var/log/mysqld.log
Usando MySQL
A ferramenta padrão para interagir com o MySQL é o
mysql
cliente que instala com o mysql-server
pacote. O cliente MySQL é usado através de um terminal. Login raiz
-
Para fazer login no MySQL como usuário root:
mysql -u root -p
-
Quando solicitado, digite a senha de root que você atribuiu quando o script mysql_secure_installation foi executado.
Você será apresentado a um cabeçalho de boas-vindas e o prompt do MySQL, conforme mostrado abaixo:
mysql>
-
Para gerar uma lista de comandos para o prompt do MySQL, digite\h
. Você verá então:
List of all MySQL commands: Note that all text commands must be first on line and end with ';' ? (\?) Synonym for `help'. clear (\c) Clear command. connect (\r) Reconnect to the server. Optional arguments are db and host. delimiter (\d) Set statement delimiter. NOTE: Takes the rest of the line as new delimiter. edit (\e) Edit command with $EDITOR. ego (\G) Send command to mysql server, display result vertically. exit (\q) Exit mysql. Same as quit. go (\g) Send command to mysql server. help (\h) Display this help. nopager (\n) Disable pager, print to stdout. notee (\t) Don't write into outfile. pager (\P) Set PAGER [to_pager]. Print the query results via PAGER. print (\p) Print current command. prompt (\R) Change your mysql prompt. quit (\q) Quit mysql. rehash (\#) Rebuild completion hash. source (\.) Execute an SQL script file. Takes a file name as an argument. status (\s) Get status information from the server. system (\!) Execute a system shell command. tee (\T) Set outfile [to_outfile]. Append everything into given outfile. use (\u) Use another database. Takes database name as argument. charset (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets. warnings (\W) Show warnings after every statement. nowarning (\w) Don't show warnings after every statement. For server side help, type 'help contents' mysql>
Criar um novo usuário e banco de dados MySQL
-
No exemplo abaixo,testdb
é o nome do banco de dados,testuser
é o usuário epassword
é a senha do usuário.
create database testdb; create user 'testuser'@'localhost' identified by 'password'; grant all on testdb.* to 'testuser' identified by 'password';
Você pode encurtar esse processo criando o usuário enquanto atribuindo permissões de banco de dados:
create database testdb; grant all on testdb.* to 'testuser' identified by 'password';
-
Em seguida, saia do MySQL.
exit
Criar uma tabela de amostra
-
Faça login novamente comotestuser
.
mysql -u testuser -p
-
Crie uma tabela de amostra chamada clientes . Isso cria uma tabela com um campo de ID do cliente do tipo INT para inteiro (incrementado automaticamente para novos registros, usado como chave primária), além de dois campos para armazenar o nome do cliente.
use testdb; create table customers (customer_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, first_name TEXT, last_name TEXT);
-
Em seguida, saia do MySQL.
exit
Redefinir a senha raiz do MySQL
Se você esquecer sua senha de root do MySQL, ela poderá ser redefinida.
-
Pare a instância atual do servidor MySQL e reinicie-a com a opção de não solicitar uma senha.
sudo systemctl stop mysqld sudo mysqld_safe --skip-grant-tables &
-
Reconecte-se ao servidor MySQL com a conta raiz do MySQL.
mysql -u root
-
Use os seguintes comandos para redefinir a senha do root. Substituirpassword
com uma senha forte.
use mysql; update user SET PASSWORD=PASSWORD("password") WHERE USER='root'; flush privileges; exit
-
Em seguida, reinicie o MySQL.
sudo systemctl start mysqld
Ajustar MySQL
MySQL Tuner é um script Perl que se conecta a uma instância em execução do MySQL e fornece recomendações de configuração com base na carga de trabalho. Idealmente, a instância do MySQL deve estar operando por pelo menos 24 horas antes de executar o sintonizador. Quanto mais tempo a instância estiver em execução, melhor o conselho que o MySQL Tuner dará.
-
Baixe o MySQL Tuner para o seu diretório inicial.
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
-
Para executá-lo:
perl ./mysqltuner.pl
Você será solicitado a fornecer o nome e a senha do usuário root do MySQL. A saída mostrará duas áreas de interesse:Recomendações gerais e Variáveis a serem ajustadas.
O MySQL Tuner é um excelente ponto de partida para otimizar um servidor MySQL, mas seria prudente realizar pesquisas adicionais para configurações adaptadas às aplicações que utilizam MySQL em seu Linode.
Ainda tem algumas perguntas?
Junte-se à nossa Comunidade e poste suas perguntas para outros entusiastas do Linode e Linux para ajudá-lo.
Perguntas relacionadas:
- Como instalar o phpMyAdmin no Centos7
- Como posso configurar uma pilha LAMP/LEMP no meu Linode?
- Como executo o MySQL e o MongoDB?
Mais informações
Você pode querer consultar os seguintes recursos para obter informações adicionais sobre este tópico. Embora estes sejam fornecidos na esperança de que sejam úteis, observe que não podemos garantir a precisão ou pontualidade dos materiais hospedados externamente.
- Manual de referência do MySQL 5.6
- Manual PHP MySQL
- Exemplos de Perl DBI para DBD::mysql
- Guia do usuário MySQLdb
- Tutorial do Sintonizador MySQL