MacPorts에서 MariaDB 설치 (MacOS High Sierra 10.13)

MacPorts에서 MariaDB 설치 (MacOS High Sierra 10.13)

2022-10-03 last update

8 minutes reading macports macos mariadb macOSSierra
아직 현역 MacBookPro에 MariaDB를 설치하고 싶습니다.
brew 또는 MacPorts 어느 쪽으로 할까 ...

우선은 brew로 해보자.
$ brew install mariadb
$ brew install --build-from-source mariadb

경위는 생략하지만 이것이 실패했습니다.

그래서 MacPorts에서 시도해 봅시다.
MacPorts에 대해서는, 이쪽을 참고로. (세세한 것은 설명하지 않습니다)

오랜만에 사용했기 때문에 청소합니다.
우선은 전부 갱신으로부터.
$ sudo port -d selfupdate

mariadb 패키지가 있습니까? (검색)
$ sudo port search mariadb

있었기 때문에 설치.
$ sudo port -v install mariadb

무사히 버렸다.
그러나, 서버로 기동하려면 「mariadb-server」로 인스톨하지 마시고 싶다.
$ sudo port -v install mariadb-server
Password:
Warning: MacPorts is configured to use an unsigned source for the ports tree. Please edit sources.conf and change 'rsync://rsync.macports.org/release/ports/' to 'rsync://rsync.macports.org/release/tarballs/ports.tar'.
--->  Computing dependencies for mariadb-server.
--->  Fetching archive for mariadb-server
--->  mariadb-server-5.5.68_0.darwin_17.noarch.tbz2 doesn't seem to exist in /opt/local/var/macports/incoming/verified
--->  Attempting to fetch mariadb-server-5.5.68_0.darwin_17.noarch.tbz2 from https://kmq.jp.packages.macports.org/mariadb-server
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  4802  100  4802    0     0  40607      0 --:--:-- --:--:-- --:--:-- 40694
--->  Attempting to fetch mariadb-server-5.5.68_0.darwin_17.noarch.tbz2.rmd160 from https://kmq.jp.packages.macports.org/mariadb-server
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   512  100   512    0     0  14784      0 --:--:-- --:--:-- --:--:-- 15058
--->  Installing mariadb-server @5.5.68_0
--->  Activating mariadb-server @5.5.68_0
x ./
(略)
x ./Library/LaunchDaemons/org.macports.mariadb-server.plist
--->  Cleaning mariadb-server
--->  Removing work directory for mariadb-server
--->  Updating database of binaries
--->  Scanning binaries for linking errors
--->  No broken files found.
--->  No broken ports found.
--->  Some of the ports you installed have notes:
  mariadb-server has the following notes:
    If this is a new install you might want to run:

    $ sudo -u _mysql /opt/local/lib/mariadb/bin/mysql_install_db


할 수 있었다. 그럼 어떻게 해보자.
마지막 줄에 정중하게 써 있으므로 명령 실행.
$ sudo -u _mysql /opt/local/lib/mariadb/bin/mysql_install_db
Installing MariaDB/MySQL system tables in '/opt/local/var/db/mariadb' ...
210307 23:45:41 [Note] /opt/local/lib/mariadb/bin/mysqld (mysqld 5.5.68-MariaDB) starting as process 14238 ...
OK
Filling help tables...
210307 23:45:47 [Note] /opt/local/lib/mariadb/bin/mysqld (mysqld 5.5.68-MariaDB) starting as process 14247 ...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:

'/opt/local/lib/mariadb/bin/mysqladmin' -u root password 'new-password'
'/opt/local/lib/mariadb/bin/mysqladmin' -u root -h MacBook-Pro.local password 'new-password'

Alternatively you can run:
'/opt/local/lib/mariadb/bin/mysql_secure_installation'

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the MariaDB Knowledgebase at http://mariadb.com/kb or the
MySQL manual for more instructions.

You can start the MariaDB daemon with:
cd '/opt/local' ; /opt/local/lib/mariadb/bin/mysqld_safe --datadir='/opt/local/var/db/mariadb'

You can test the MariaDB daemon with mysql-test-run.pl
cd '/opt/local/mysql-test' ; perl mysql-test-run.pl

Please report any problems at http://mariadb.org/jira

The latest information about MariaDB is available at http://mariadb.org/.
You can find additional information about the MySQL part at:
http://dev.mysql.com
Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/

$

잘 갔다. 그럼 어떻게 해보자.
실행 결과를 살펴보면 서버 시작 방법이 작성되었습니다. 이것이다.
You can start the MariaDB daemon with:
cd '/opt/local' ; /opt/local/lib/mariadb/bin/mysqld_safe --datadir='/opt/local/var/db/mariadb'

글쎄, 실행해 보면 ...
$ sudo /opt/local/lib/mariadb/bin/mysqld_safe --datadir='/opt/local/var/db/mariadb'
210308 00:23:29 mysqld_safe Logging to '/opt/local/var/db/mariadb/MacBook-Pro.local.err'.
210308 00:23:29 mysqld_safe Starting mysqld daemon with databases from /opt/local/var/db/mariadb

겉으로보기에 잘 어울리는 것처럼 보이지만 실패했습니다.
ps 명령으로 확인해도 프로세스가 나타나지 않는다.
그래서 오류 메시지를 보면 ...
$ sudo cat /opt/local/var/db/mariadb/MacBook-Pro.local.err
210307 23:56:38 mysqld_safe Starting mysqld daemon with databases from /opt/local/var/db/mariadb
210307 23:56:38 [Note] /opt/local/lib/mariadb/bin/mysqld (mysqld 5.5.68-MariaDB) starting as process 14538 ...
210307 23:56:38 [ERROR] Can't find messagefile '/opt/local/lib/mariadb/share/mariadb/errmsg.sys'
210307 23:56:38 [ERROR] Aborting
210307 23:56:38 [Note]
210307 23:56:38 mysqld_safe mysqld from pid file /opt/local/var/db/mariadb/MacBook-Pro.local.pid ended

이것에는 괴로워했다.
여기서 errmsg.sys가 없다는 메시지에 힌트를 얻습니다.
errmsg.sys가 있는 디렉토리를 찾으면
/opt/local/share/mariadb/english/
에 있었다.
그래서, mariadb의 설정 파일 「my.cnf」에 이하의 행을 추가했다.
# Use default MacPorts settings
!include /opt/local/etc/mariadb/macports-default.cnf

[mariadb]
language=/opt/local/share/mariadb/english/

위의 단서는 다음 사이트를 참조하십시오.

그러면...
$ sudo /opt/local/lib/mariadb/bin/mysqld_safe --datadir='/opt/local/var/db/mariadb'
210308 00:41:32 mysqld_safe Logging to '/opt/local/var/db/mariadb/MacBook-Pro.local.err'.
210308 00:41:32 mysqld_safe Starting mysqld daemon with databases from /opt/local/var/db/mariadb


이번에는 무사히 시작했다. 이번에는 프롬프트가 반환되지 않습니다.
ps 명령에서도 mysqld 프로세스가 나타났다.

그리고,
· mysql의 기동, 종료
・평상시 사용하는 유저의 작성
이것은 특히 문제없이 잘 되었기 때문에 생략.

다음은 php와 mysql을 연계시키고 싶지만 잘 작동하지 않습니다.
오늘은 이 근처에서 잠들어요.

… 나중에
django와 mysql을 연계시키고 있다.
장고
python manage.py migrate

작동하지 않습니다. 왜이다.
django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' ([Errno 61] Connection refused)")

라고 나온다. 왜? ?

여러가지 조사하면, 에러 메세지대로 「mysql이 TCP 3306 포트로 기동하고 있지 않다」라고 하는 것을 알았다.
기동시의 로그를 보면, 포트 0이 되어 있다.
210316 23:42:51 [Note] /opt/local/lib/mariadb/bin/mysqld: ready for connections.
Version: '5.5.68-MariaDB'  socket: '/tmp/mysql-dbug.sock'  port: 0  Source distribution

기본 포트 3306에서 시작되지 않은 것 같습니다.
여러가지 조사하면 원인은 my.cnf의 설정.
$ cat my.cnf
# Use default MacPorts settings
!include /opt/local/etc/mariadb/macports-default.cnf
(以下略)

include 되고 있는 파일의 목적지 macports-default.cnf 를 보면, 「skip-networking」가 유효하게 되어 있다.
이것이 유효하면, TCP/IP를 일절 listen 하지 않습니다.
댓글을 달자.
$ sudo cat /opt/local/etc/mariadb/macports-default.cnf
# WARNING! ANY CHANGES TO THIS FILE WILL BE LOST ON UNINSTALL/UPGRADES!
# Make your changes to /opt/local/etc/mariadb/my.cnf
# YOU HAVE BEEN WARNED!

# MacPorts default options
[mysqld]
# skip-networking so multple mysql server ports can be loaded
# without each competing for port 3306.
skip-networking

이번에는 시작 메시지를 확인하면,
210316 23:45:33 [Note] /opt/local/lib/mariadb/bin/mysqld: ready for connections.
Version: '5.5.68-MariaDB'  socket: '/tmp/mysql-dbug.sock'  port: 3306  Source distribution

좋아.

하지만, 잘 생각하면, 원래 my.cnf 로, macports-default.cnf 를 include 하지 않으면 좋잖아, 라고 하는 것으로,
아래와 같이 코멘트 아웃.
( macports-default.cnf 에는이 파일을 변경해도 사라져 버리므로주의 사항이 쓰여 있습니다.)
$ cat my.cnf
# Use default MacPorts settings
# !include /opt/local/etc/mariadb/macports-default.cnf
(以下略)

이제 무사히 3306 포트를 청취했습니다.
조금 끼지 마라.