Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como conceder todos os privilégios em um banco de dados no MySQL


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 os PRIVILEGES do tipo ALL (assim tudo, claro). Observação:a maioria das instalações modernas do MySQL não requer o opcional PRIVILEGES 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 esse username 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)