Concessão * * todos * * privilégios na base de dados

eu criei a base de dados, por exemplo 'mydb'.

CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;
Agora posso entrar na base de dados de todos os lugares, mas não posso criar tabelas.

Como conceder todos os privilégios nessa base de dados e (no futuro) tabelas. Não consigo criar tabelas na base de dados 'mydb'. Tenho sempre:

CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'
Author: codeforester, 2011-02-16

10 answers

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;

É assim que crio os meus privilégios de "super-utilizador" (embora normalmente indique uma máquina).

NOTA IMPORTANTE

Embora esta resposta possa resolver o problema do acesso, WITH GRANT OPTION cria um utilizador de MySQL que pode editar as permissões de outros utilizadores.

O privilégio da opção de concessão permite-lhe dar a outros utilizadores ou remover de outros utilizadores os privilégios que você mesmo possui.

Por razões de segurança, não deve utilizar este tipo de conta de usuário para qualquer processo que o público terá acesso (ou seja, um site). Recomenda-se que você crie um utilizador com apenas privilégios de base de dados para esse tipo de Utilização.

 826
Author: diagonalbatman, 2017-05-23 12:18:27
Esta é uma pergunta antiga, mas não acho que a resposta aceite seja segura. É bom para criar um super usuário, mas não é bom se você quiser conceder privilégios em um único banco de dados.
grant all privileges on mydb.* to myuser@'%' identified by 'mypasswd';
grant all privileges on mydb.* to myuser@localhost identified by 'mypasswd';

% parece não cobrir as comunicações do 'socket', para as quais o localhost serve. WITH GRANT OPTION só é bom para o super utilizador, caso contrário é geralmente um risco de segurança.

Espero que isto ajude.
 478
Author: akostadinov, 2013-10-04 02:22:43
Isto vai ser útil para algumas pessoas.

Da linha de comandos MySQL:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
Infelizmente, neste momento o newuser não tem permissões para fazer nada com as bases de dados. Na verdade, se o newuser mesmo tentar login (com a senha, senha), eles não serão capazes de alcançar a shell MySQL. Por conseguinte, a primeira coisa a fazer é facultar ao utilizador o acesso às informações de que necessitará.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

Os asteriscos neste comando referem-se à base de dados e tabela (respectivamente) que eles podem acessar-este comando específico permite ao usuário ler, editar, executar e executar todas as tarefas em todas as bases de dados e tabelas.

Depois de ter finalizado as permissões que deseja configurar para os seus novos utilizadores, certifique-se sempre de actualizar todos os privilégios.

FLUSH PRIVILEGES;
As suas alterações entrarão em vigor.

Para mais informações: http://dev.mysql.com/doc/refman/5.6/en/grant.html

Se não estiver confortável com a linha de comandos poderá então usar um cliente como MySQL workbench, Navicat ou SQLyog

 103
Author: BrenBarn, 2014-04-08 06:58:40

1. Criar a base de dados

CREATE DATABASE db_name;

2. Crie o nome de Utilizador da base de dados DB_ nome

GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'localhost' IDENTIFIED BY 'password';

3. Utilizar a base de dados

USE db_name;

4. Finalmente você está na base de dados DB_ nome e, em seguida, executar os comandos como criar, selecionar e inserir operações.

 28
Author: Bhavnesh, 2017-11-07 09:26:42

Este SQL concede em todas as bases de dados, mas apenas privilégios básicos. Eles são suficientes para Drupal ou Wordpress e como um nicety, permite que um desenvolvedor conta para projetos locais.

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, 
    INDEX, ALTER, CREATE TEMPORARY TABLES 
ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
 20
Author: celeryandsprite, 2015-10-08 14:18:08
GRANT ALL PRIVILEGES ON mydb.* TO myuser@localhost IDENTIFIED BY 'mypasswd';

Funciona para privilégios no esquema:)

Opcional: depois de mypasswd pode adicionar WITH GRANT OPTION

 13
Author: Dutch Glory, 2017-11-07 09:32:26

Olá, usei este código para ter o super utilizador em mysql

GRANT EXECUTE, PROCESS, SELECT, SHOW DATABASES, SHOW VIEW, ALTER, ALTER ROUTINE,
    CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP,
    EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, CREATE USER, FILE,
    LOCK TABLES, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SHUTDOWN,
    SUPER
        ON *.* TO mysql@'%'
    WITH GRANT OPTION;

E depois

FLUSH PRIVILEGES;
 12
Author: gastonnina, 2015-11-03 20:40:21

Eu poderia fazer com que funcionasse apenas adicionando GRANT OPTION, sem que isso recebesse sempre permissão negada erro

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost' WITH GRANT OPTION;
 12
Author: GnanaPrakash, 2016-02-06 21:20:51

Para aceder do servidor remoto apenas à base de dados mydb

GRANT ALL PRIVILEGES ON mydb.* TO 'root'@'192.168.2.21';
Para aceder do servidor remoto a todas as bases de dados.
GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.2.21';
 5
Author: Developer, 2015-06-25 11:32:54

Para conceder todos os privilégios na base de dados: mydb ao utilizador: myuser, execute apenas:

GRANT ALL ON mydb.* TO 'myuser'@'localhost';

Ou:

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';

A palavra-chave PRIVILEGES não é necessária.

Também não sei porque é que as outras respostas sugerem que o IDENTIFIED BY 'password' seja colocado no fim do comando. Penso que não é necessário.
 0
Author: pgmank, 2018-03-29 14:16:08