Inicialize o banco de dados MySQL como não-root e execute o SQL Server para teste

3

Eu quero fazer alguns testes específicos do MySQL e preciso executar um novo banco de dados MySQL como usuário não root. Eu estou usando o Debian Linux e espero que alguém possa iniciar o mysql_install_db e outros comandos como usuário normal com as opções certas e locais graváveis.

  1. Isso funciona?

  2. Como fazer isso?

Eu não quero baixar software do site MySQL. Em vez disso, quero usar os executáveis fornecidos pelos pacotes do sistema operacional já instalados. O raciocínio é este:

  1. O software já está instalado - instalar um novo software da rede é inútil, lento, pode falhar, possivelmente um risco de segurança, etc. Até onde sei, o KDE está fazendo algo similar para armazenamento de dados.

  2. Se eventualmente funcionar, eu quero agrupar o teste em um script portátil que seja executado em qualquer computador em que mysql_install_db etc. estejam disponíveis.

Eu procurei na web por tutoriais / dicas, mas encontrei apenas um monte de descrições sobre como instalar o software a partir do zero. Com as informações que li, tentei fazer isso:

mkdir ~/tmp/mysql/
mkdir ~/tmp/mysql/mysql/
mkdir ~/tmp/mysql/sql_data/

mysql_install_db \
    --defaults-file=my.cnf
    --user=daniel
    --basedir=/home/daniel/tmp/mysql/mysql/
    --datadir=/home/daniel/tmp/mysql/sql_data/
    --socket=/home/daniel/tmp/mysql/socket

Mas reclama:

FATAL ERROR: Could not find my_print_defaults

The following directories were searched:

   /home/daniel/tmp/mysql/mysql//bin
   /home/daniel/tmp/mysql/mysql//extra

UPDATE: ainda não encontrei uma solução para limitar a saída a mensagens de erro. Eu recebo muitas linhas com a tag [Note] , mas não encontrei um argumento para definir o nível de saída de depuração.

    
por Daniel Böhmer 29.03.2016 / 01:56

1 resposta

0

Encontrei chamadas semelhantes no código do Akonadi e comecei a criar os comandos do zero enquanto consultava os respectivos textos de ajuda. Parece que eu acabei de incluir opções inúteis / contraproducentes antes. Isso agora funcionou para mim:

mysql_install_db                    \
  --defaults-file=/dev/null         \ # don't user my.cnf in /etc/ or ~/
  --datadir=/home/daniel/tmp/mysql/ \ # use given directory for data
  --force                             # make mysqld work without /usr/bin/resolveip

Parece que preciso apenas de 1 diretório para dados. A configuração de basedir só funciona se você fornecer uma instalação completa do MySQL.

Depois disso, eu posso rodar o servidor MySQL:

mysqld                              \
  --defaults-file=/dev/null         \ # as above
  --datadir=/home/daniel/tmp/mysql/ \ # as above
  --socket=/home/daniel/tmp/socket  \ # use writable socket
  --skip-networking                   # for my purposes: only socket connections
    
por 30.03.2016 / 11:16