mysql 5.6 seems to have a new --random-passwords option for mysql_install_db, which lets me discover the root password: http://dev.mysql.com/doc/refman/5.6/en/mysql-install-db.html#option_mysql_install_db_random-passwords
But what can I do with mysql 5.5? The documentation suggests that the root password should be empty, but I cannot seem to connect with no password (or an empty password), so i cannot set a real root password:
For instance:
I initialize the database like so:
$ mysql_install_db --no-defaults --user=murrayc --datadir=/tmp/testmysql/data
I start the server like so:
$ mysqld_safe --no-defaults --user=murrayc --port=3308 --datadir='/tmp/testmysql/data' --socket='/tmp/testmysql/mysqld.sock' --pid-file='/tmp/testmysql/pid'
But when I try to set the root password like so (I believe that --user in this case refers to the mysql user, not the linux user):
$ mysqladmin --no-defaults --port=3308 --user=root --password='' password 'somenewpassword'
I get this error:
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'