Eu quero criar um novo usuário no MySQL e dar acesso total apenas a um banco de dados, digamos dbTest
, que eu criei com um comando como create database dbTest;
. Quais seriam os comandos do MySQL para fazer isso?
Eu quero criar um novo usuário no MySQL e dar acesso total apenas a um banco de dados, digamos dbTest
, que eu criei com um comando como create database dbTest;
. Quais seriam os comandos do MySQL para fazer isso?
Tente isso para criar o usuário:
CREATE USER 'user'@'hostname';
Tente isto para dar acesso ao banco de dados dbTest
:
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
Se você estiver executando o código / site acessando o MySQL na mesma máquina, o nome do host seria localhost.
Agora, o colapso.
GRANT
- Este é o comando usado para criar usuários e conceder direitos a bancos de dados, tabelas, etc.
ALL PRIVILEGES
- Isso indica que o usuário terá todos os privilégios padrão. No entanto, isso não inclui o privilégio de usar o comando GRANT.
dbtest.*
- Estas instruções MySQL aplicam esses direitos para uso em todo o banco de dados dbtest. Você pode substituir o * por nomes de tabelas específicos ou rotinas de armazenamento, se desejar.
TO 'user'@'hostname'
- 'usuário' é o nome de usuário da conta que você está criando. Nota: Você deve ter aspas simples lá. 'hostname' diz ao MySQL de quais hosts o usuário pode se conectar. Se você quiser apenas da mesma máquina, uselocalhost
IDENTIFIED BY 'password'
- Como você deve ter adivinhado, isso define a senha para esse usuário.
Sintaxe
Para criar usuário no MySQL / MariaDB 5.7.6 e superior, use a
CREATE USER
sintaxe :para conceder todo acesso ao banco de dados (por exemplo
my_db
), useGRANT
Sintaxe , por exemploOnde
ALL
( tipo_priv ) pode ser substituído por privilégio específico, comoSELECT
,INSERT
,UPDATE
,ALTER
, etc.Em seguida, para recarregar as permissões recém-atribuídas, execute:
Executando
Para executar os comandos acima, você precisa executar o
mysql
comando e digitá-los no prompt; em seguida, efetue logout peloquit
comando ou Ctrl- D.Para executar a partir do shell, use o
-e
parâmetro (substituaSELECT 1
por um dos comandos acima):ou imprima a instrução da entrada padrão:
Se o acesso foi negado acima, especifique os parâmetros
-u
(para usuário) e-p
(para senha) ou, para acesso a longo prazo, defina suas credenciais~/.my.cnf
, por exemploIntegração com Shell
Para pessoas que não estão familiarizadas com a sintaxe do MySQL, aqui estão algumas funções úteis do shell, fáceis de lembrar e usar (para usá-las, você precisa carregar as funções do shell incluídas mais adiante).
Aqui está um exemplo:
Para usar os comandos acima, você precisa copiar e colar as seguintes funções no seu arquivo rc (por exemplo
.bash_profile
) e recarregar seu shell ou originar o arquivo. Nesse caso, basta digitarsource .bash_profile
:Nota: Se você preferir não deixar rastreio (como senhas) no seu histórico do Bash, verifique: Como impedir que os comandos apareçam no histórico do bash?
fonte
~/.my.cnf
conforme sugerido acima.Para criar um usuário e conceder todos os privilégios em um banco de dados.
Entre no MySQL:
Agora crie e conceda
Usuário anônimo (apenas para teste local)
Como alternativa, se você deseja apenas conceder acesso irrestrito total a um banco de dados (por exemplo, na sua máquina local para uma instância de teste, você pode conceder acesso ao usuário anônimo, da seguinte forma:
Estar ciente
Isso é bom para dados indesejados no desenvolvimento. Não faça isso com qualquer coisa que lhe interessa.
fonte
ignore a opção -p , se o usuário do mysql não tiver senha ou apenas pressione o botão "[Enter]" para ignorar. as cordas cercadas por chaves precisam ser substituídas por valores reais.
fonte
Você pode criar novos usuários usando a instrução CREATE USER e conceder direitos a eles usando GRANT .
fonte
Para mim, isso funcionou.
Onde
fonte
O comando abaixo funcionará se você desejar criar um novo usuário, dar a ele todo o acesso a um banco de dados específico (nem todos os bancos de dados no seu Mysql) no seu host local.
Isso concederá todos os privilégios a um banco de dados
test_database
(no seu casodbTest
) para esse usuário no host local.Verifique quais permissões o comando acima emitiu para esse usuário executando o comando abaixo.
Por precaução, se você deseja limitar o acesso do usuário a apenas uma única tabela
fonte
Caso a
host
peça seja omitida, o padrão é o símbolo curinga%
, permitindo todos os hosts.CREATE USER 'service-api';
GRANT ALL PRIVILEGES ON the_db.* TO 'service-api' IDENTIFIED BY 'the_password'
fonte