I’m thinking your gonna be disappointed.
When I have more time (and a quiet moment) I will look deeper, for now we could add the symlink manually as you or Brian suggested, or bite the bullet and move the folder back to it’s original location.
Maybe the files in /var/run/mysql are actually added a install time and have gotten deleted in the read-only implementation and it’s subsequent undoing, it’s all guesswork without the build guide.
Maybe I need to blow the dust off my emonPi and download an image to see whats what.
I just took a look at my stock setup and the sock file is NOT in the mysql folder in /var/lib. Confused by what is going on I looked into the old RO emonSD setup and I think I’ve found the culprit!
see https://github.com/emoncms/emoncms/blob/master/docs/RaspberryPi/read-only.md#move-mysql-database
There is a bit that tells you to edit the mysql setting for the sock file location in /etc/mysql/my.cnf
. That is currently socket=/home/pi/data/mysql/mysql.sock
as follows
Under [mysqld]:
datadir=/home/pi/data/mysql
socket=/home/pi/data/mysql/mysql.sock
Under [client]:
port=3306
socket=/home/pi/data/mysql/mysql.sock
HOWEVER !!!
My /etc/mysql/my.cnf
is as follows
# The MariaDB configuration file
#
# The MariaDB/MySQL tools read configuration files in the following order:
# 1. "/etc/mysql/mariadb.cnf" (this file) to set global defaults,
# 2. "/etc/mysql/conf.d/*.cnf" to set global options.
# 3. "/etc/mysql/mariadb.conf.d/*.cnf" to set MariaDB-only options.
# 4. "~/.my.cnf" to set user-specific options.
#
# If the same option is defined multiple times, the last one will apply.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]
# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/
so off hand I do not know what yours will be or what it should be.
I’m now wondering if you should just give in and edit the command that is looking in the original location to look in the RO emonSD location instead, or you could edit those lines in /etc/mysql/my.cnf
(assuming that is found where it should be). The latter would probably be for the best, in case something else goes looking for it, editing the command will not help other programs. Ultimately I think it needs properly reverting, but that has other ramifications too, like editing the emoncms settings.php and being in conflict with any future emonpi updates might cause an issue too.
this is turning out to be a right can of worms, if this “new emonSD image” was new, I would expect it too have some reference to MariaDB too, or at least differ to the mysql install in some way. This is looking like a conversion from mysql to mariadb rather than a fresh install. After some searching i found my sock setting
pb66@test2:~$ cat /etc/mysql/mariadb.conf.d/50-server.cnf
#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#
# this is read by the standalone daemon and embedded servers
[server]
# this is only for the mysqld standalone daemon
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
#
# * Fine Tuning
#
key_buffer_size = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam_recover_options = BACKUP
#max_connections = 100
#table_cache = 64
#thread_concurrency = 10
#
# * Query Cache Configuration
#
query_cache_limit = 1M
query_cache_size = 16M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file = /var/log/mysql/mysql.log
#general_log = 1
#
# Error log - should be very few entries.
#
log_error = /var/log/mysql/error.log
#
# Enable the slow query log to see queries with especially long duration
#slow_query_log_file = /var/log/mysql/mariadb-slow.log
#long_query_time = 10
#log_slow_rate_limit = 1000
#log_slow_verbosity = query_plan
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# other settings you may need to change.
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
#binlog_ignore_db = exclude_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates you can use for example the GUI tool "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem
#
# Accept only connections using the latest and most secure TLS protocol version.
# ..when MariaDB is compiled with OpenSSL:
# ssl-cipher=TLSv1.2
# ..when MariaDB is compiled with YaSSL (default in Debian):
# ssl=on
#
# * Character sets
#
# MySQL/MariaDB default is Latin1, but in Debian we rather default to the full
# utf8 4-byte character set. See also client.cnf
#
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
#
# * Unix socket authentication plugin is built-in since 10.0.22-6
#
# Needed so the root database user can authenticate without a password but
# only when running as the unix root user.
#
# Also available for other users if required.
# See https://mariadb.com/kb/en/unix_socket-authentication-plugin/
# this is only for embedded server
[embedded]
# This group is only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]
# This group is only read by MariaDB-10.1 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
[mariadb-10.1]
pb66@test2:~$
[edit]
By edit the command, i mean edit the /etc/mysql/debian.cnf file to use the same
/home/pi/data/mysql/mysql.sock` path, or yes if you want to minimise the straying from emonSD norm (what ever that might be), just adding a symlink as mentioned earlier should do it I guess (assuming it sticks)
sudo ln -s /home/pi/data/mysql/mysql.sock /var/run/mysql/mysql.sock
it might be the easier and least disruptive move, even if not “the right way to do it”.