Eu criei o banco 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 eu posso entrar no banco de dados de qualquer lugar, mas não consigo criar tabelas.
Como conceder todos os privilégios nesse banco de dados e (no futuro) tabelas. Não consigo criar tabelas no banco de dados 'mydb'. Eu sempre recebo:
CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'
mysql
mariadb
mysql-error-1142
marioosh
fonte
fonte
FLUSH PRIVILEGES
?flush privileges
não é necessário quando você usagrant
comandos. x4FLUSH PRIVILEGES;
somente se você modificar as tabelas de permissões diretamente usando declarações comoINSERT
,UPDATE
ouDELETE
Respostas:
É assim que eu crio meus privilégios de "Superusuário" (embora eu normalmente especifique um host).
NOTA IMPORTANTE
Enquanto esta resposta pode resolver o problema de acesso,
WITH GRANT OPTION
cria um usuário MySQL que pode editar as permissões de outros usuários .Por motivos de segurança, você não deve usar esse tipo de conta de usuário para nenhum processo ao qual o público tenha acesso (por exemplo, um site). É recomendável que você crie um usuário com apenas privilégios de banco de dados para esse tipo de uso.
fonte
myuser
por seu próprio nome de usuário personalizado.Esta é uma pergunta antiga, mas não acho que a resposta aceita seja segura. É bom para criar um super usuário, mas não é bom se você deseja conceder privilégios em um único banco de dados.
%
parece não cobrir as comunicações de soquete, para quelocalhost
serve.WITH GRANT OPTION
é bom apenas para o super usuário, caso contrário, geralmente é um risco de segurança.A atualização para o MySQL 5.7+ parece que isso alerta sobre:
Portanto, a configuração da senha deve ser feita com comandos separados. Agradecemos o comentário de @ scary-wombat.
Espero que isto ajude.
fonte
WITH GRANT OPTION
e segmentar um banco de dados especificado em vez de all (*
).unix sockets
. Ao usar olocalhost
cliente myslq no linux, tente usar um soquete unix em vez de uma conexão TCP com o servidor.Isso será útil para algumas pessoas:
Na linha de comando do MySQL:
Infelizmente, neste momento o newuser não tem permissões para fazer qualquer coisa com os bancos de dados. De fato, se o novo usuário tentar fazer login (com a senha, a senha), ele não poderá acessar o shell do MySQL.
Portanto, a primeira coisa a fazer é fornecer ao usuário acesso às informações necessárias.
Os asteriscos neste comando se referem ao banco de dados e à tabela (respectivamente) que eles podem acessar - esse comando específico permite ao usuário ler, editar, executar e executar todas as tarefas em todos os bancos de dados e tabelas.
Depois de finalizar as permissões que você deseja configurar para seus novos usuários, sempre certifique-se de recarregar todos os privilégios.
Suas alterações agora estarão em vigor.
Para mais informações: http://dev.mysql.com/doc/refman/5.6/en/grant.html
Se você não estiver familiarizado com a linha de comando, poderá usar um cliente como MySQL Workbench , Navicat ou SQLyog
fonte
flush privileges
não é necessário quando você usagrant
comandos. x4GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost' IDENTIFIED BY 'my_password' WITH GRANT OPTION;
(estranho ..., mas é verdade)1. Crie o banco de dados
2. Crie o nome de usuário para o banco de dados db_name
3. Use o banco de dados
4. Finalmente, você está no banco de dados db_name e, em seguida, execute os comandos como criar, selecionar e inserir operações.
fonte
username
deve ter todos os privilégios,db_name
mas não oDROP db_name;
privilégio?Este SQL concede em todos os bancos de dados, mas apenas privilégios básicos. Eles são suficientes para Drupal ou Wordpress e, como segurança, permitem uma conta de desenvolvedor para projetos locais.
fonte
Funciona para privilégios no esquema :)
Opcional: depois de
mypasswd
adicionarWITH GRANT OPTION
fonte
Eu consegui fazê-lo funcionar apenas adicionando
GRANT OPTION
, sem isso, sempre receber erro de permissão negadafonte
Olá eu usei esse código para ter o super usuário no mysql
e depois
fonte
flush privileges
não é necessário quando você usagrant
comandos. x4GRANT
varia entre versões do MySQL.Para acessar do servidor remoto apenas para o banco de dados mydb
Para acessar do servidor remoto para todos os bancos de dados.
fonte
Para conceder todos os privilégios no banco de dados:
mydb
ao usuáriomyuser
:, basta executar:ou:
A
PRIVILEGES
palavra-chave não é necessária.Também não sei por que as outras respostas sugerem que
IDENTIFIED BY 'password'
seja colocado no final do comando. Eu acredito que não é necessário.fonte