FONTE:http://www.linuxnarede.com.br/artigos/fullnews.php?id=83 Existem duas maneiras de adicionar usuários: utilizando instruções GRANT ou manipulando as tabelas de permissões do MySQL diretamente. O método preferido é utilizar instruções GRANT, porque elas são mais concisas e menos propensas a erros. See Secção 4.4.1, “A Sintaxe de GRANT e REVOKE”. Existem vários programas de colaboradores (como o phpMyAdmin) que podem ser utilizados para criar e administrar usuários. Os exemplos abaixo mostram como usar o cliente mysql para configurar novos usuários. Estes exemplos assumem que privilégios são configurados de acordo com os padrões descritos na seção anterior. Isto significa que para fazer alterações, você deve se conectar na mesma máquina em que o mysqld está executando, você deve se conectar com o usuário root, e o usuário root deve ter os privilégios inster ao banco de dados mysql e o administrativo reload. Também, se você alterou a senha do usuário root, você deve especificá-la para os comandos mysql abaixo. Primeiro, use o programa mysql para se conectar ao servidor como o usuário root do MySQL: shell> mysql --user=root mysql Você pode adicionar novos usuários utilizando instruções GRANT: mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY 'alguma_senha' WITH GRANT OPTION; mysql> GRANT ALL PRIVILEGES ON *.* TO monty@'%' IDENTIFIED BY 'alguma_senha' WITH GRANT OPTION; mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost; mysql> GRANT USAGE ON *.* TO dummy@localhost; Estas instruções GRANT configuram três novos usuários: * monty Um superusuário completo que pode conectar ao servidor de qualquer lugar, mas deve utilizar uma senha 'alguma_senha' para fazer isto. Perceba que devemos utilizar instruções GRANT para monty@localhost e monty@"%". Se nós não adicionarmos a entrada com localhost, a entrada para o usuário anônimo para localhost que é criada por mysql_install_db toma precedência quando nos conectarmos da máquina local, porque ele contem um campo Host com um valor mais específico e também vem antes na ordenação da tabela user. * admin Um usuário que possa conectar de localhost sem uma senha e que é concedido os privilégios administrativos reload e process. Isto permite ao usuário a execução dos comandos mysqladmin reload, mysqladmin refresh e mysqladmin flush-*, bem como o mysqladmin processlist. Nenhum privilégio a nível de bancos de dados é concedido. (Depois eles podem ser adicionados utilizando instruções GRANT adicionais.) *dummy Um usuário que pode conectar sem uma senha, mas somente na máquina local. Não são concedidos nenhum privilégio---o tipo de privilégio USAGE permite a criação de um usuário sem privilégios. Ele tem o efeito de criar todos os privilégios globais com 'N'. Considera-se que você irá conceder privilégios específicos a conta posteriormente. Também é possível adicionar a mesma informação de acesso do usuário diretamente, utilizando instruções INSERT e depois dizendo ao servidor para recarregar as tabelas de permissões: shell> mysql --user=root mysql mysql> INSERT INTO user VALUES('localhost','monty',PASSWORD('alguma_senha'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); mysql> INSERT INTO user VALUES('%','monty',PASSWORD('alguma_senha'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); mysql> INSERT INTO user SET Host='localhost',User='admin', Reload_priv='Y', Process_priv='Y'; mysql> INSERT INTO user (Host,User,Password) VALUES('localhost','dummy',''); mysql> FLUSH PRIVILEGES; Dependendo da sua versão do MySQL, você pode precisar utilizar um número diferente de valores 'Y' acima. (Versões anteriores à versão 3.22.11 tem menos campos de privilégios, e posteriores a 4.02 têm mais). Para o usuário admin, a maior sintaxe legível de INSERT usando SET que está disponível a partir da versão 3.22.11 é a utilizada. Note que para configurar um superusuário, você só precisar criar uma entrada na tabela user com os campos de privilégios configurados para 'Y'. Não é necessário gerar entradas nas tabelas db ou host. Na última instrução INSERT (para o usuário dummy), apenas as colunas Host, User e Password nos registros da tabela user tem valores atribuídos. Nenhuma das colunas de privilégios são definidas explicitamente, assim o MySQL atribui a todas o valor padrão de 'N'. Isto é a mesma coisa que o GRANT USAGE faz. O seguinte exemplo adiciona um usuário custom que pode acessar o banco de dados bankaccout apenas do localhost, o banco de dados expenses somente de whitehouse.gov e o banco de dados customer de todas de server.domain. Ele deseja utilizar a senha obscure das três máquinas. Para configurar os privilégios deste usuário utilizando instruções GRANT, execute estes comandos: shell> mysql --user=root mysql mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP -> ON bankaccount.* -> TO custom@localhost -> IDENTIFIED BY 'obscure'; mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP -> ON expenses.* -> TO custom@'whitehouse.gov' -> IDENTIFIED BY 'obscure'; mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP -> ON customer.* -> TO custom@'server.domain' -> IDENTIFIED BY 'obscure'; Para configurar os privilégios do usuário modificiando as tabelas de permissões diretamente, utilize estes comandos (perceba o FLUSH PRIVILEGES no final): shell> mysql --user=root mysql mysql> INSERT INTO user (Host,User,Password) -> VALUES('localhost','custom',PASSWORD('obscure')); mysql> INSERT INTO user (Host,User,Password) -> VALUES('whitehouse.gov','custom',PASSWORD('obscure')); mysql> INSERT INTO user (Host,User,Password) -> VALUES('server.domain','custom',PASSWORD('obscure')); mysql> INSERT INTO db -> (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv, -> Create_priv,Drop_priv) -> VALUES -> ('localhost','bankaccount','custom','Y','Y','Y','Y','Y','Y'); mysql> INSERT INTO db -> (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv, -> Create_priv,Drop_priv) -> VALUES -> ('whitehouse.gov','expenses','custom','Y','Y','Y','Y','Y','Y'); mysql> INSERT INTO db -> (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv, -> Create_priv,Drop_priv) -> VALUES('server.domain','customer','custom','Y','Y','Y','Y','Y','Y'); Como no exemplo anterior que usaram as instruções INSERT, você pode precisar de usar um número diferentes de valores 'Y', dependendo de sua versão do MySQL. As primeiras três instruções INSERT adicionam entradas na tabela user que permite ao usuário custom conectar a partir de várias máquinas com a senha determinada, mas não concede permissões ao mesmo (todos os privilégios são configurados com o valor padrão de 'N'). As próximas três instruções INSERT adicionam entradas na tabela db que concedem privilégios à custom para os bancos de dados bankaccount, expenses e customer, mas só quando acessados à partir das máquinas apropriadas. Normalmente, depois de modificar as tabelas de permissões diretamente, você deve dizer ao servidor para recarregá-las (com FLUSH PRIVILEGES) para que as alterações nos privilégios tenham efeito. Se você deseja fornecer a um usuário específico acesso de qualquer máquina em um determinado domínio (por exemplo, meudomínio.com), você pode utilizar uma instrução GRANT como a seguir: mysql> GRANT ... -> ON *.* -> TO myusername@'%.mydomain.com' -> IDENTIFIED BY 'mypassword'; Para realizar a mesma coisa modificando diretamente as tabelas de permissões, faça isto: mysql> INSERT INTO user VALUES ('%.meudominio, 'meunomedeusuario' PASSWORD('minhasenha'),...); mysql> FLUSH PRIVILEGES; This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version. |
This entry was posted
on 10:03
and is filed under
MYSQL
.
You can leave a response
and follow any responses to this entry through the
Assinar:
Postar comentários (Atom)
.