domingo, 26 de fevereiro de 2012

Criar conta de administrador no Moodle 2 com comando SQL

A partir da versão 2 do Moodle, a conta do administrador do sistema é registrada na tabela de configuração, o mdl_config

Até a versão 1.9, o usuário admin criado durante  a instalação era registrado na tabela mdl_role_assignments com perfil administrador no contexto do sistema.  A partir da versão 2, o usuário admin é registrado na tabela de configuração, mdl_config com a chave  siteadmins

A tabela mdl_config armazena a configuração em pares de chave e valor. As chaves são registradas na coluna name e o valor na coluna value. Na coluna name é registrada a chave siteadmins. Na coluna value, o id do usuário admin. Caso haja mais de usuário com perfil de admin, o campo value registra a lista do id de cada usuário separado por vírgula.  

Agora que o mistério já está desvendado, vamos ao comando SQL. Para adicionar um novo usuário com perfil administrador no Moodle 2, siga os seguintes passos:

1° Passo - Cadastre um novo usuário no Moodle. Siga as instruções no link: http://moodlesql.blogspot.com/2010/07/cadastrar-usuario-no-moodle-pelo.html  Caso já tenha o usuário cadastrado, basta recuperar o id na tabela mdl_user. 
    
2° Passo – Recupere o id dos usuários já cadastrados como admin, executando o seguinte comando SQL:

SELECT value FROM mdl_config  WHERE name='siteadmins'
 
Esse comando deve retornar um número ou uma lista de números separados por vírgula. Geralmente retorna o número 2, o id do usuário admin gerado durante a instalação.
 
3° Passo – Atualize a tabela mdl_config, adicionando o novo usuário admin. Atualize com id do novo usuário gerado no 1° passo. O comando de atualização deve adicionar o valor recuperado no 2° passo e ainda adicionar novo id gerado no 1° passo.  Se no 1° passo for gerado ou escolhido o id 10 para ser o novo admin e no 2° passo for retornado número 2, ou seja, o id do usuário admin gerado durante a instalação, a tabela deve ser atualizada adicionando o novo id. Segue comando SQL de atualização:

UPDATE mdl_config  SET value='2,10' WHERE name='siteadmins'
 
Caso esteja se questionando de onde surgiu o parâmetro  value='2,10', é necessário ressaltar que esse valor é dinâmico. Aqui, para efeito de demonstração, partimos do pressuposto de que valor 2 foi gerado no 2° passo e o valor 10 foi gerado no 1° passo. O que importa é o campo value guarda a lista de id dos usuários que são administradores do Moodle, separados por vírgula. 

Bem, isso é tudo que você precisa saber para gerar uma senha de administrador da versão do Moodle 2.0 ou superior por meio de comando SQL. Caso tenha esquecido a senha de admin, aqui está a solução. Agora, proteja bem a senha de acesso do banco de dados. Caso alguém com má intenção tenha acesso à sua base, pode seguir essas dicas para gerar senha de admin e fazer estragos no seu Moodle.

15 comentários:

  1. Obrigado Badiu, não sei se este post foi por causa da minha pergunta que nem consegui mais achar onde eu fiz, mas resolveu meu problema. Parabéns pelo trabalho que você desenvolve.

    ResponderExcluir
  2. Badiu parabéns mesmo, tive esse problema uma vez devido assumir um cargo de um ex funcionário mal intencionado que fez uma mega lambança no bd.

    Ótimo artigo !

    ResponderExcluir
    Respostas
    1. Oi POPO, tudo beleza?
      Nesse tipo de situação, a grande dificuldade é explicar para a gerencia o que aconteceu. Um profissional mal intencionado pode querer mostrar que ele é essencial. Uma forma de fazer isso, é fazer o sucessor passe por incompetente.
      Fico feliz ao saber que ajudei. Qualquer coisa, me dá um sinal.

      Excluir
    2. Como faço para ter o controlde de acessos no moodle, saber quem fez login, em que horário, se possive enviar resposta para meu e-mail pessoal drronado_fernandes@hotmail.com

      Agradecido

      Excluir
    3. Ronaldo,

      Para extrair a data em que os usuários fizerem login no Moodle, basta fazer um filtro na tabela mdl_log. O valor do campo action deve ser igual a login. Segue os comandos:

      Comando SQL que extrai id do usuário e data de login:
      SELECT userid, time FROM mdl_log WHERE action='login'

      Comando SQL que extrai nome do usuário e data de login:
      SELECT u.firstname,u.lastname, l.time FROM mdl_user u INNER JOIN mdl_log l ON u.id=l.userid WHERE l.action='login'

      Excluir
  3. Badiu boa tarde,

    Como faço para no logs de relatórios, os moderadores visualizar somente os relatório dos estudantes. Os moderadores não podem visualizar os logs de outros moderadores e nem dos professores.

    ResponderExcluir
    Respostas
    1. Eliezer,
      Não localizei nenhuma permissão no Moodle que possibilite que o moderador não enxergue relatório de log de tutores e outros moderadores no ambiente do curso. De repente exista essa configuração. Se alguém souber, compartilhe. De momento vejo a solução cirúrgica, ou seja, hacker no código. Outra alternativa consiste em implementar um plugin de relatório que contempla essa funcionalidade.

      Excluir
  4. Estou com um problema muito sério...
    O administrador de uma plataforma simplesmente perdeu todas as suas atribuições...
    Pf, preciso muito de ajuda! Me dê uma luz!!
    Desde já agradeço!

    ResponderExcluir
    Respostas
    1. Vitor,
      Se você está usando a versão 2.x do Moodle e o usuário admin perdeu todas as permissões de admin, sugiro as seguinte alternativa:

      ALTERNATIVA I

      Atribua novamente a permissão de admin ao usuário admin, seguindo os seguintes passos:

      a) Recupere o id do usuário admin. Via de regra é 2;

      b) Execute o comando abaixo para ver se está configurado como admin
      SELECT value FROM mdl_config WHERE name='siteadmins'

      c) Se não estiver, insira editando a variável siteadmins na tabela mdl_config executando o seguinte comando:

      UPDATE mdl_config SET value='ID_DO_ADMIN' WHERE name='siteadmins'

      d) Acesse o FTP e limpe a pasta cache do moodledata. Apague todos os arquivos da seguinte pasta: MOODLE_URL_INTALL/moodledata/cache

      ALTERNATIVA II

      Caso a solução abordado na ALTERNATIVA I não funcionar, vamos criar um novo usuário com perfil admin. Para isso, siga o seguintes passos:

      a) Crie um novo usuário seguindo as instruções nesse post: http://moodlesql.blogspot.com.br/2010/07/cadastrar-usuario-no-moodle-pelo.html

      b) Extraia o id do usuário recém criado, executando o comando a seguir:

      SELECT max(id) FROM mdl_user;

      c) Insira o id recuperado no item b) como admin seguindo instruções nesse post http://moodlesql.blogspot.com.br/2012/02/criar-conta-de-administrador-no-moodle.html

      d) Acesse o FTP e limpe a pasta cache do moodledata. Apague todos os arquivos da seguinte pasta: MOODLE_URL_INTALL/moodledata/cache

      e) Logue o novo usuário. Deve dar certo. Esse procedimento foi testado no Moodle 2.6.5. Em tese deve funcionar em toda a família da versão 2 do Moodle.

      Excluir
    2. Agradeço seu apreço e agilidade em sempre estar respondendo as dúvidas dos visitantes!
      Um belo trabalho e um suporte a todos que se adentram no moodle! Te agradeço pela ajuda!
      Abçs!

      Excluir
  5. Prezado Badiu, hoje me deparei com o seguinte erro no meu ambiente moodle, será que você pode me ajudar?
    Config table does not contain version, can not continue, sorry.

    More information about this error

    It is usually not possible to recover from errors triggered during installation, you may need to create a new database or use a different database prefix if you want to retry the installation.

    ResponderExcluir
    Respostas
    1. Cesar,

      Moodle faz sincronização das informações da versão registradas no arquivo version.php com as registrada no banco. Se der erro que não há informação sobre a versão, possivelmente a informação foi apagada ou corrompida no banco. Neste caso lhe sugiro o seguinte procedimento:

      1) Execute no banco que está com problema o seguintes comando:
      SELECT value FROM mdl_config WHERE name = 'version';

      2) Se não vir nenhum resultado tente inserir um registro de versão que está no arquivo MOODLE_DIR_INSTALL/version.php

      Veja o resultado desses comandos na versão 2.8.3 do Moodle:
      Comando SQL: SELECT value FROM mdl_config WHERE name = 'version';
      Resultado: 2014111003.02

      Excluir
  6. Olá Badiu

    Obrigado desde já pelo apoio que me possa fornecer.

    Eu faço login como Administrador no Moodle (V 2.2.3). No entanto, não consigo utilizar as funcionalidades de administrador (não consigo clicar em "administração do sitio" ou "definições do perfil").

    Se eu criar um novo utilizador com o perfil Administrador ficarei com o problema resolvido?

    Obrgado desde já pela ajuda!

    ResponderExcluir
  7. boa tarde Badiu, estou com uma pedra no sapato...tomei partido de um projeto ja em andamento e que utiliza moodle, porém meu conhecimento nisso é 0. Gostaria de saber se você possui alguma referência para que e possa estudar e entender como ele funciona.

    Grato.

    ResponderExcluir