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'
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.
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.
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
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.
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';
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
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;
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;
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';
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.
IDENTIFIED BY 'password'
seja colocado no fim do comando. Penso que não é necessário.