비 루트로 MySQL 데이터베이스를 초기화하고 테스트를 위해 SQL 서버를 실행


2

MySQL 특정 테스트를 수행하고 루트가 아닌 사용자로 새로운 MySQL 데이터베이스를 실행해야합니다. 데비안 리눅스를 mysql_install_db사용하고 있으며 올바른 옵션과 쓰기 가능한 위치를 가진 일반 사용자로 및 다른 명령을 시작할 수 있습니다.

  1. 이 작동합니까?

  2. 어떻게합니까?

MySQL 웹 사이트에서 소프트웨어를 다운로드하고 싶지 않습니다. 대신 이미 설치된 OS 패키지에서 제공하는 실행 파일을 사용하고 싶습니다. 추론은 이렇습니다 :

  1. 소프트웨어가 이미 설치되어 있습니다. 인터넷에서 새 소프트웨어를 설치하는 것은 의미가없고, 느리고, 실패 할 수 있으며, 보안 위험 등의 가능성이 있습니다. KDE는 데이터 저장과 비슷한 작업을 수행하고 있습니다.

  2. 그것이 효과가 있다면 테스트 mysql_install_db가 가능한 모든 컴퓨터에서 실행되는 휴대용 스크립트로 테스트를 래핑하고 싶습니다 .

웹에서 자습서 / 힌트를 검색했지만 처음부터 소프트웨어를 설치하는 방법에 대한 설명 만로드했습니다. 내가 읽은 정보에서 나는 이것을 시도했다.

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

그러나 그것은 불평합니다 :

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

업데이트 : 여전히 출력을 오류 메시지로 제한하는 솔루션을 찾지 못했습니다. 태그가 많은 줄을 얻었 [Note]지만 디버그 출력 레벨을 설정하는 인수를 찾지 못했습니다.


실행중인 MySQL 서버가 필요합니까? 에서 Akonadi FAQ에 대한 믿음의 소스를 찾았습니다 . src / server / storage / dbconfigmysql.cpp
Daniel Böhmer

/home/daniel/tmp/mysql/mysql/bin이 과정의 시작 부분에는 무엇이 있습니까? 아무것도?
Michael-sqlbot 2016 년

@ 마이클 - sqlbot : 디렉토리 binextra존재하지 않습니다. 내가 만든 디렉토리를 반영하여 질문을 업데이트했습니다. 보시다시피 내가 처음부터 만들었습니다. 비어 있어요
Daniel Böhmer

답변:


0

Akonadi 코드에서 비슷한 호출을 발견하고 해당 도움말 텍스트를 참조하면서 처음부터 명령을 작성하기 시작했습니다. 전에 쓸모없는 / 비생산적인 옵션을 포함시킨 것 같습니다. 이것은 이제 나를 위해 일했다 :

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

데이터를 위해 하나의 디렉토리 만 필요한 것 같습니다. basedir전체 MySQL 설치를 제공하는 경우에만 설정이 작동합니다.

이 후 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.