I’m using MariaDB 10.5.9-1 on Manjaro 5.10.23-1.
I initialized mariadb database directory using this command:
$ sudo mariadb-install-db --user=shaouai --basedir=/usr --datadir=/var/lib/mysql
After data directory initialization, permissions and ownership of /var/lib/mysql
:
$ ls -ld /var/lib/mysql drwx------ 5 shaouai root 4096 Apr 10 00:08 mysql $ ls -lh /var/lib/mysql total 109M -rw-rw---- 1 shaouai shaouai 24K Apr 10 00:08 aria_log.00000001 -rw-rw---- 1 shaouai shaouai 52 Apr 10 00:08 aria_log_control -rw-rw---- 1 shaouai shaouai 972 Apr 10 00:08 ib_buffer_pool -rw-rw---- 1 shaouai shaouai 12M Apr 10 00:08 ibdata1 -rw-rw---- 1 shaouai shaouai 96M Apr 10 00:08 ib_logfile0 drwx------ 2 shaouai shaouai 4.0K Apr 10 00:08 mysql drwx------ 2 shaouai shaouai 4.0K Apr 10 00:08 performance_schema drwx------ 2 shaouai shaouai 4.0K Apr 10 00:08 test
And there’s one another directory /run/mysqld
, which file mysqld.sock
resides in by default when server is up and running, has permissions and ownership:
$ ls -ld /run/mysqld/ drwxr-xr-x 2 shaouai shaouai 60 Apr 10 08:31 /run/mysqld/
I have no idea when /run/mysqld
was created, maybe the first time server started successfully.
mysqld_safe --datadir=/var/lib/mysql
can start server successfully.
But the problem is, after every reboot, the permissions and ownership of /var/lib/mysql
and /run/mysqld
was reset to mysql:mysql
:
$ ls -ld /var/lib/mysql drwx------ 5 mysql mysql 4096 Apr 10 00:08 mysql $ ls -lh /var/lib/mysql total 109M -rw-rw---- 1 shaouai shaouai 24K Apr 10 00:08 aria_log.00000001 -rw-rw---- 1 shaouai shaouai 52 Apr 10 00:08 aria_log_control -rw-rw---- 1 shaouai shaouai 972 Apr 10 00:08 ib_buffer_pool -rw-rw---- 1 shaouai shaouai 12M Apr 10 00:08 ibdata1 -rw-rw---- 1 shaouai shaouai 96M Apr 10 00:08 ib_logfile0 drwx------ 2 shaouai shaouai 4.0K Apr 10 00:08 mysql drwx------ 2 shaouai shaouai 4.0K Apr 10 00:08 performance_schema drwx------ 2 shaouai shaouai 4.0K Apr 10 00:08 test $ ls -ld /run/mysqld/ drwxr-xr-x 2 mysql mysql 60 Apr 10 08:31 /run/mysqld/
Thus due to various “permission denied”, MariaDB server failed to start.
There’s one question totally the same as mine.
Here is full output of systemctl cat mariadb.service
.
Advertisement
Answer
I’m not sure why you changed the user. It may not be a good idea. But assuming there is a good reason, below explains your situtation:
It looks like the mysqld_safe may have changed the permissions. If you start this way for testing add --user=shaouai
to the arguments.
To allow systemd to default start as the user shaouai
systemctl edit mariadb.service
Add:
[Service] User=shaouai Group=shaouai
Then:
chown -R shaouai: /var/lib/mysql /run/mysqld/
Then systemctl restart mariadb.service
.
This will start the service as this user instead of the default mysql
user.