MySQL 특정 테스트를 수행하고 루트가 아닌 사용자로 새로운 MySQL 데이터베이스를 실행해야합니다. 데비안 리눅스를 mysql_install_db
사용하고 있으며 올바른 옵션과 쓰기 가능한 위치를 가진 일반 사용자로 및 다른 명령을 시작할 수 있습니다.
-
이 작동합니까?
-
어떻게합니까?
MySQL 웹 사이트에서 소프트웨어를 다운로드하고 싶지 않습니다. 대신 이미 설치된 OS 패키지에서 제공하는 실행 파일을 사용하고 싶습니다. 추론은 이렇습니다 :
-
소프트웨어가 이미 설치되어 있습니다. 인터넷에서 새 소프트웨어를 설치하는 것은 의미가없고, 느리고, 실패 할 수 있으며, 보안 위험 등의 가능성이 있습니다. KDE는 데이터 저장과 비슷한 작업을 수행하고 있습니다.
-
그것이 효과가 있다면 테스트
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]
지만 디버그 출력 레벨을 설정하는 인수를 찾지 못했습니다.
답변
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