Para começar a editar privilégios no MySQL, você deve primeiro fazer login no seu servidor e depois conectar-se ao
mysql
cliente. Normalmente você vai querer se conectar com root
ou qualquer conta que seja sua conta primária de "superusuário" inicial que tenha acesso total em toda a instalação do MySQL. Normalmente a
root
usuário terá recebido uma senha de autenticação quando o MySQL foi instalado, mas se esse não for o caso, você deve tomar medidas para aumentar sua segurança adicionando root
senhas conforme ilustrado na documentação oficial. Conectando-se à ferramenta de linha de comando MySQL
Para este exemplo, vamos supor
root
é a conta principal do MySQL. Para começar a usar a ferramenta de linha de comando MySQL (mysqlcli
), conecte-se ao seu servidor como root
usuário, então emita o mysql
comando:$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 112813
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>
Se for bem-sucedido, você verá alguma saída sobre sua conexão MySQL e estará voltado para o
mysql
incitar. Observação:caso você não consiga se conectar diretamente ao servidor como
root
usuário antes de se conectar ao mysql
, você pode especificar o usuário que deseja conectar como adicionando o --user=
sinalizador: $ mysql --user=username
Conceder privilégios
Agora que você está no
mysqlcli
prompt, você só precisa emitir o GRANT
comando com as opções necessárias para aplicar as permissões apropriadas. Tipos de privilégio
O
GRANT
O comando é capaz de aplicar uma ampla variedade de privilégios, desde a capacidade de CREATE
tabelas e bancos de dados, ler ou escrever FILES
, e até mesmo SHUTDOWN
o servidor. Há uma grande variedade de sinalizadores e opções disponíveis para o comando, então você pode querer se familiarizar com o que GRANT
pode realmente fazer navegando pela documentação oficial. Privilégios específicos do banco de dados
Na maioria dos casos, você concederá privilégios aos usuários do MySQL com base no
database
específico essa conta deve ter acesso. É prática comum, por exemplo, para cada database
exclusivo do MySQL em um servidor para ter seu próprio user
exclusivo associado a ele, de modo que apenas um único user
tem acesso de autenticação a um único database
e vice versa. Para
GRANT ALL
privilégios para um user
, permitindo a esse usuário controle total sobre um database
específico , use a seguinte sintaxe:mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
Com esse comando, dissemos ao MySQL para:
GRANT
osPRIVILEGES
do tipoALL
(assim tudo, claro). Observação:a maioria das instalações modernas do MySQL não requer o opcionalPRIVILEGES
palavra-chave.- Esses privilégios são para
database_name
e se aplica a todos tabelas desse banco de dados, que é indicado pelo.*
que segue. - Esses privilégios são atribuídos a
username
quando esseusername
está conectado localmente, conforme especificado por@'localhost'
. Para especificar qualquer host válido, substitua'localhost'
com'%'
.
Em vez de fornecer todos os privilégios para o banco de dados inteiro, talvez você queira dar ao
tolkien
usuário apenas a capacidade de ler dados (SELECT
) dos authors
tabela dos books
base de dados. Isso seria facilmente realizado assim:mysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
Criando outro superusuário
Embora não seja particularmente seguro, em alguns casos você pode querer criar outro ‘super usuário’, que tenha TODOS os privilégios em TODOS os bancos de dados no servidor. Isso pode ser feito de forma semelhante ao acima, mas substituindo o
database_name
com o asterisco curinga:mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
Agora
tolkien
tem os mesmos privilégios que o padrão root
conta, cuidado! Salvando suas alterações
Como etapa final após qualquer atualização dos privilégios do usuário, salve as alterações emitindo o comando
FLUSH PRIVILEGES
comando do mysql
incitar:mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)