Se eu tiver root em um banco de dados mysql e quiser baixar os privilégios para um usuário normal, sem usar sua senha, posso fazer isso? se sim, como? pense # su - username
no unix. Basicamente, estou apenas tentando evitar que a senha seja deles, para que eu possa testar seus privilégios em seus usuários. No postgres, eu poderia simplesmente permitir uma autenticação de identidade no usuário root do sistema, para ignorar a autenticação de senha. A razão pela qual preciso disso é para poder reproduzir o problema de um usuário sendo eles, não ser eles não permitirá uma reprodução precisa. É claro que posso pedir a senha deles, mas isso leva mais tempo do que ignorá-la.
relate perguntas
-
Existem ferramentas de benchmarking do MySQL? [fechado]
-
Onde posso encontrar o log lento do mysql?
-
Como posso otimizar um mysqldump de um banco de dados grande?
-
Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?
-
Como um grupo pode rastrear alterações no esquema do banco de dados?
Acabei de perceber - contanto que você não se importe em bloquear o usuário enquanto faz login -
UPDATE mysql.user SET password=PASSWORD('new password') WHERE user='username' AND host='hostname';
UPDATE mysql.user SET password='saved password hash' WHERE user='username' AND host='hostname';
... você pode precisar
flush privileges;
depois de manipular a tabela mysql.user.É possível emular um usuário a partir do MySQL 5.5.7, com a introdução de Proxy Users . Eu nunca tinha feito isso antes, então tentei usar o plug-in de autenticação de teste , pois parece que os usuários de proxy funcionam apenas com os plug-ins de autenticação ativados. Aqui estão os passos que dei.
Primeiros passos como root:
mysql> INSTALL PLUGIN test_plugin_server SONAME 'auth_test_plugin.so';
mysql> SHOW PLUGINS;
Crie um usuário para emular (no seu caso já existe):
mysql> GRANT ALL PRIVILEGES ON
dtest@
localhostIDENTIFIED BY 'mypass';
Criar usuário 'proxy':
mysql> CREATE USER proxy@localhost IDENTIFIED WITH test_plugin_server AS 'dtest';
mysql> GRANT PROXY ON dtest@localhost TO proxy@localhost;
mysql> FLUSH PRIVILEGES;
Agora, tente fazer o login usando user:
proxy
, password:dtest
(a variável 'AS' do usuário proxy):$ mysql -uproxy -pdtest
mysql> SELECT USER(), CURRENT_USER();
mysql> SHOW GRANTS;
Hoje em dia o MySQL não tem uma senha de root e ao invés disso usa o
auth_socket
plugin para verificar se o usuário conectado ao socket é o usuário root do sistema. Você pode usar esta mesma técnica para resolver seu problema se estiver de acordo em ter contas unix para todos os seus usuários, o que abre todos os tipos de possibilidades, por exemplo, fácil armazenamento de arquivos binários!Primeiro você adicionaria uma conta unix para o usuário:
root: adduser testuser
Em seguida, adicione um usuário MySQL correspondente (pode ser feito automaticamente em um
adduser.local
script):CREATE USER 'testuser'@'localhost' IDENTIFIED WITH auth_socket;
Agora mude para o usuário (sem senha necessária quando feito como root):
root: su testuser
Conecte-se ao MySQL como o usuário (sem senha necessária porque você está logado como esse usuário):
testuser: mysql -u $USER
(ou -you testuser em vez de usar a variável de ambiente)É melhor fornecer o
-u
parâmetro do usuário porque a rotina automática de conveniência do usuário do cliente mysql não é boa para descobrir por conta própria, por exemplo, se você passar de usuário para conta de usuário, ele usará o primeiro usuário por algum motivo.Não conheço uma maneira específica de replicar o equivalente a
su
, no entanto, você não precisa da senha deles - devido à maneira como o mysql lida com a autenticação, você pode definir uma senha diferente (ou nenhuma) de cada máquina que está logado de.