0

System: Mac OS X Server 10.6.latest

I just switched from the ancient MySQL (<5?) that came with Mac OS X Server to MariaDB 10.1, installed via MacPorts. (That was a whole 'nuther barrel of fun...)

Now I'm having trouble accessing the database via localhost, but only in some situations. PhpMyAdmin works with only "localhost" in the config.inc.php, but several MediaWiki instances I have running require the whole socket name in LocalSettings.php, such as "localhost:/opt/local/var/run/mariadb-10.1/mysqld.sock".

I have the socket named in my.cnf, and in three places in php.ini for the three different MySQL glue libraries available. I restarted Apache and mysqld to get them to read the changes. So I'm thinking localhost should be ubiquitous now.

I've patched around the problem by putting the socket name after "localhost" on the MediaWiki sites, but I know this is going to come back to bite me in the butt someday if I don't fix it properly.

Any thoughts on what's going on here?

Jan Steinman
  • 111
  • 6
  • 1
    I took the coward's way out and changed the mysqld startup script to put the socket in /var/mysql/mysql.sock, and everything works with unadorned "localhost." It appears to me that at least one of the three PHP-MySQL interface libraries is behaving badly, but I don't have time to dig through it. So it's working properly now, with the socket in the default location. (I only put it elsewhere because that's where MacPorts puts it when you build from source.) – Jan Steinman Feb 17 '15 at 03:19

1 Answers1

-1

Presumably both PhpMyAdmin and MediaWiki are on the same machine and that's the same machine as the MariaDB server? If so, there's no reason why one should work and not the other if they have the same settings.

  • Ensure you are using the same port when both are specified as just localhost?

  • If you are not using the same mysql user for the login in both applications, please ensure that the host values for those users are the same.

Luke Cousins
  • 377
  • 1
  • 3
  • 18
  • Why the downvote? – Luke Cousins Feb 14 '15 at 14:34
  • Thanks for your suggestions, Luke. (I did not down-vote you.) The port should be irrelevant when using "localhost," as it uses a socket instead. The MySQL user/pass has not changed from what it was when it was working before. The host value ("localhost") has not changed either, which still works in phpMyAdmin, but not in MediaWiki nor in two cases of custom php code I've written in php. – Jan Steinman Feb 16 '15 at 20:08
  • Hi Jan. I may be wrong, but I'm pretty certain that using `localhost` is not the same as specifying a socket. If you specify a socket then certainly the port is irrelevant, but if you specify `localhost` then it is still a network connection on the loopback interface and therefore port is applicable. I would suggest looking at firewall settings but if it works for one then I don't see how this can be the problem. Trying entering the host in Mediawiki as `localhost:3306` (format of `host:port`) rather than just `localhost` (or your correct port). – Luke Cousins Feb 16 '15 at 20:42
  • Also, if you could post the relevant bit of your MediaWiki and PMA config files that might help. Obviously swap the password for something else. – Luke Cousins Feb 16 '15 at 20:43
  • Luke: the MySQL manual says that "localhost" assumes a socket. I think this is generally true of Unix and Linux, but I know that on Windows, "localhost" means "127.0.0.1." But I'm not using Windows. – Jan Steinman Feb 17 '15 at 03:17
  • In that case, I stand corrected, sorry for the confusion. Have you tried using `127.0.0.1` or `127.0.0.1:3306`? – Luke Cousins Feb 17 '15 at 09:35
  • Yes, Luke; it does work with 127.0.0.1. But under Unix (and clones), using a socket is faster and more efficient, because it does not have to build and tear down a TCP/IP stack in order to work. A socket avoids using the entire networking layer, which the local address does not. – Jan Steinman Feb 18 '15 at 02:43