## MySQL on OpenSolaris/OpenIndiana @ Adrian Tritschler · Tuesday, Jul 19, 2011 · 6 minute read · Update at Jul 19, 2011 ·

Years ago I needed MySQL on my Ubuntu box, I wasn’t interested in MySQL, just in a package that needed it. I didn’t pay any attention to the database, just selected it in the package manager, answered a couple of questions and IT ALL JUST WORKED.

Yesterday I started to go through the same process on my newly resuscitated OpenSolaris box, selected “mysql” in the package manager and selected “Install”. It downloaded, it said it was installing, the installer finished and I tried to go on with what I was interested in. In the immortal words of Catweazle, “NUTHINK WORKS!”

MySQL server not available

Sure enough, nothing seems to be running, nothing seems to be configured, there’s no instructions and I guess I’m just meant to hunt around and find out how to do it myself.

# Output of mysql_install_db

Hunting around the only real reference I can find on MySQL on OpenSolaris – 2.6.2. Installing MySQL on OpenSolaris using IPS – seems to imply that I need to run mysql_install_db myself, so I do. Below is its output, interleaved with my comments or later investigations:

me@hosty:/usr/mysql$pfexec bin/mysql_install_db WARNING: The host 'hosty' could not be looked up with resolveip. This probably means that your libc libraries are not 100 % compatible with this binary MySQL version. The MySQL daemon, mysqld, should work normally with the exception that host name resolving will not work. This means that you should use IP addresses instead of hostnames when specifying MySQL privileges ! Installing MySQL system tables... 110718 21:56:34 [Warning] Forcing shutdown of 2 plugins OK Filling help tables... 110718 21:56:35 [Warning] Forcing shutdown of 2 plugins OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system  As far as I can tell there is nothing called “support-files” anywhere, the only “mysql.server” file is at /usr/mysql/5.1/share/mysql/mysql.server So where is “the right place” for this system? RTFM? Maybe, but which FM? PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands:  Any suggestions on how to “start the server” or am I just meant to know how? /usr/mysql/5.1/bin/mysqladmin -u root password 'new-password' /usr/mysql/5.1/bin/mysqladmin -u root -h hosty password 'new-password' Alternatively you can run: /usr/mysql/5.1/bin/mysql_secure_installation  None of which work, because the server isn’t running or won’t run. 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 manual for more instructions.  What manual? I can’t seem to find any manual: me@hosty:/usr/mysql/5.1$ man mysql
No manual entry for mysql.


Back to the output, seems I finally get instructions on how to run the daemon:

You can start the MySQL daemon with:
cd /usr/mysql/5.1 ; /usr/mysql/5.1/bin/mysqld_safe &


I can, but it promptly exits.

me@hosty:/usr/mysql/5.1#  /usr/mysql/5.1/bin/mysqld_safe
110719 12:32:10 mysqld_safe Logging to '/var/mysql/5.1/data/hosty.err'.
110719 12:32:10 mysqld_safe Starting mysqld daemon with databases from /var/mysql/5.1/data
110719 12:32:11 mysqld_safe mysqld from pid file /var/mysql/5.1/data/hosty.pid ended

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql/5.1/mysql-test ; perl mysql-test-run.pl


No I can’t, the script doesn’t exist.

bash: cd: /usr/mysql/5.1/mysql-test: No such file or directory
Can't open perl script "mysql-test-run.pl": No such file or directory

Please report any problems with the /usr/mysql/5.1/bin/mysqlbug script!


I’d love to, but I really don’t know where to start, and knowing my luck so far the bug reporting script will fail because the server isn’t running!

Nothing seems to be running and the service is put into “maintenance”

me@hosty:/usr/mysql/5.1\$ svcs mysql
STATE          STIME    FMRI
maintenance    22:14:42 svc:/application/database/mysql:version_51


# Error messages hosty.err

The error file /var/mysql/5.1/data/hosty.err says that files that do exist don’t, and that I should run a utility that cannot be run:

110719 12:47:39 mysqld_safe Starting mysqld daemon with databases from /var/mysql/5.1/data
110719 12:47:39 [Note] Plugin 'FEDERATED' is disabled.
/usr/mysql/5.1/bin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)


Can’t find it? I can.

me@hosty:/var/mysql/5.1/data# ls -l mysql/plugin.frm
-rw-rw----   1 root     root        8586 Jul 18 22:22 mysql/plugin.frm


Is the message spurious, or are the permissions or ownership wrong?

110719 12:47:39 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.


I’d love to run mysql_upgrade, but I can’t, since it requires the server to be running in order to update the database.

InnoDB: Log scan progressed past the checkpoint lsn 0 37356
110719 12:47:40  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Doing recovery: scanned up to log sequence number 0 44233
110719 12:47:40  InnoDB: Starting an apply batch of log records to the database...
InnoDB: Progress in percents: 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
88 89 90 91 92 93 94 95 96 97 98 99
InnoDB: Apply batch completed
110719 12:47:40  InnoDB: Started; log sequence number 0 44233
110719 12:47:40 [ERROR] /usr/mysql/5.1/bin/mysqld: Can't find file: './mysql/host.frm' (errno: 13)


Still can’t find it. Its still there:

me@hosty:/var/mysql/5.1/data# ls -l ./mysql/host.frm
-rw-rw----   1 root     root        9510 Jul 18 22:22 ./mysql/host.frm


Is the message spurious, or are the permissions or ownership wrong?

110719 12:47:40 [ERROR] Fatal error: Can't open and lock privilege tables: Can't find file: './mysql/host.frm' (errno: 13)
110719 12:47:40 mysqld_safe mysqld from pid file /var/mysql/5.1/data/hosty.pid ended


# Summary

A couple of hours of searching and reading has left me none the wiser; MySQL seems to be all there, but apparently won’t run because it isn’t configured, and can’t be configured because it isn’t running.

• [2011-07-21 Thu 22:30]: I believe I’ve fixed it. Knowing two-fifths of stuff-all about OpenSolaris meant I was at a loss of where to look, the only message that seemed in any way meaningful was about the “missing files” that I could see were in /var/mysql/data/mysql couldn’t be read. Everything else under /var/mysql/data was owned mysql:mysql, but that directory was root:root. Changing the ownership:

chown -R mysql.mysql mysql


Let me manually run the mysql daemon:

cd /usr/mysql/5.1 ; /usr/mysql/5.1/bin/mysqld_safe


Clearing the service “maintenance” flag and then restarting the service had it all running (I think).

svcadm clear mysql


So I’m still not sure if it was me or the OpenSolaris/OpenIndiana mysql package, but I think I’ve got it working.

My website, an agglomerative mess, probably half-eaten by a gru

# …The Owner

There’s not much more I can add to who I am.

# …The Site

Vanity site? Technology experiment? Learning tool? Blog? Journal? Diary? Photo album? I could tell you, but then I’d have to kill you…

I experiment. I play. I write and I take pictures. Some of the site is organised around topics, other parts are organized by date, then there’s always the cross-references between them.

Its all been here a fairly long time. Like the papers on my desk, or the books on the bedside table, the pile just grew… and it all grew without much plan or structure. I try not to break URLs, so historical oddities abound.

Long ago it started as a learning experiment with a few static HTML pages, then I added a bit of server-side includes and some very ugly PHP. A hand-built journal/blog on top of that PHP, then a few experiments in moving to various static publishing systems. I’ve never wanted a database-based blogging engine, so over the years I’ve tried PHP, nanoblogger, emacs-muse, silkpage and docbook before settling on Emacs Org mode for writing and jekyll for publishing. But the itch remained… I never really liked jekyll and the ruby underneath always seemed so much black magic. So now the latest incarnation is Org mode and hugo.

# …The ISP

• Hosted by @cos