• Hello,

    I’m running both a wordpress site as well as a mediawiki off of the same web servers. The mediawiki site works great! The wordpress site, meh. Not so much. I keep getting the common database connection error:

    Error establishing a database connection

    And as far as I can tell the settings between the mediawiki site and the wordpress site are nearly identical.

    Here’s the media wiki config first since that one’s working:

    ## Database settings
    $wgLBFactoryConf['class'] = 'LBFactorySimple';
    $wgDBtype = "mysql";
    $wgDBservers = '';
    $wgDBserver = "db.example.com";
    $wgDBssl    =  true;
    $wgDBname = "jfwiki";
    $wgDBuser = "admin_ssl";
    $wgDBpassword = "secret";

    And here’s what the wordpress database connection settings look like since they are not:

    /** MySQL database username */
    define('DB_NAME', 'jokefire');
    
    define('DB_USER', 'admin_ssl');
    
    /** MySQL database password */
    define('DB_PASSWORD', 'secret');
    
    /** MySQL hostname */
    define('DB_HOST', 'db.example.com');
    
    /** Database Charset to use in creating database tables. */
    define('DB_CHARSET', 'utf8');
    
    /** The Database Collate type. Don't change this if in doubt. */
    define('DB_COLLATE', '');
    
    /** Contact the database over a secure connection */
    define('DB_SSL', true);

    I realize that they’re not exactly the same. But I think you can make an easy correlation between the mediawiki settings and the settings for wordpress. And they look similar enough to think that wordpress should be working. Right?

    The only real other difference is the name of the database each site is using, which I guess makes sense.

    But the fact that medawiki works fine tells me that the user and password set for both sites has access to the database.

    Just for laughs I use the account settings from the wordpress config to demonstrate that I can connect to the DB on the command line. Again, it’s the same account info that I have in the wik site:

    #mysql -uadmin_ssl -p -h db.example.com -D jokefire  -e "show tables" | head -5
    Enter password:
    Tables_in_jokefire
    wp_bp_activity
    wp_bp_activity_meta
    wp_bp_chat_channel_users
    wp_bp_chat_channels

    Now there are a couple of things that I should probably explain about my environment. Although I have no idea if these details play into the error that I’m getting. The two different sites are both on the same web servers as mentioned. There are 3 web servers sharing a document root that sits on an NFS share.

    The sites are load balanced behind varnish 4. And the two varnish nodes are load balanced by two HA/Proxy hosts. The site names points to a VIP that is load balanced on HA/Proxy.

    There are two MySQL databases configured in a master/master setup. The database address is also a VIP that is load balanced on the same two HA/Proxy nodes. The two database servers are using MariaDB version 10.0.20-1.

    Again, I’m not really sure how important it is to know all of that. But I wanted to get those details out into the open just in case they were important.

    Thanks for your help!

Viewing 2 replies - 1 through 2 (of 2 total)
  • Thread Starter bluethundr

    (@bluethundr)

    Also, I created a basic php script to see if it could connect to the database

    <?php
    $link = mysql_connect('db.example.com', 'admin_ssl', 'secret');
    if (!$link) {
    die('Could not connect: ' . mysql_error());
    }
    echo 'Connected successfully';
    mysql_close($link);
    ?>

    And to my surprise it can’t connect!

    php testconnect.php
    Could not connect: Access denied for user 'admin_ssl'@'ec2-54-86-143-49.compute-1.amazonaws.com' (using password: YES)

    Why am I surprised that it can’t? Because again 1) the wiki can connect to the database no problem. And 2) I can connect to the db on the command line using the same credentials:

    #mysql -uadmin_ssl -p$DB_PASS -h db.example.com -e "use jokefire; show tables" | head -5
    Tables_in_jokefire
    wp_bp_activity
    wp_bp_activity_meta
    wp_bp_chat_channel_users
    wp_bp_chat_channels

    My API Client version is:

    Client API version mysqlnd 5.0.10 - 20111026 - $Id: c85105d7c6f7d70d609bb4c000257868a40840ab $

    Hope this helps narrow down the problem. Thanks!

    Thread Starter bluethundr

    (@bluethundr)

    I actually made some progress on this. The problem was SSL. Once I I took the SSL requirement out of the picture for the user everything worked. The test php script and the wordpress site both. I stumbled getting the mediawiki to connect via SSL. Once I found the setting $wgDBssl = true; for media wiki it just worked.

    For my wordpress site, I found the setting define(‘DB_SSL’, true);. I set that up in wp-config.php. However for some reason that wasn’t the silver bullet that the mediawiki SSL database setting was ( $wgDBssl = true; ). I can understand why my little test script couldn’t work with an SSL user. But do you have any idea why that wordpress setting won’t allow the site to connect to the DB?

Viewing 2 replies - 1 through 2 (of 2 total)

The topic ‘database connection error with valid settings’ is closed to new replies.