Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

I can't start MySQL on linux - Error mysqld_safe

Tags:

linux

mysql

I found in many forums around the web, but I did not find my solution. When I start the service mysql in linux ubuntu server 12.04, I get this error:

root@stroke:/# mysqld_safe &
[1] 5789
root@stroke:/# 131001 10:12:29 mysqld_safe Logging to syslog.
131001 10:12:29 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
131001 10:12:29 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

I've already given permission to the folder mysql, I've also tried to create a new password for the root mysql. But so far nothing has worked.

Thanks for help.

Some information:

root@stroke:/# /etc/init.d/mysql start
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql start

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start mysql
start: Job failed to start

The /etc/mysql/my.cnf file

#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
# 
# 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.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket          = /var/run/mysqld/mysqld.sock
nice            = 0

[mysqld]
#
# * Basic Settings
#
innodb_force_recovery = 4
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            =  0.0.0.0
#
# * Fine Tuning
#
key_buffer              = 256M
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         = BACKUP
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10
#
# * Query Cache Configuration
#
query_cache_limit       = 16M
query_cache_size        = 48M
#
# * 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 logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
#
# Here you can see queries with especially long duration
#log_slow_queries       = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#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       = include_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 I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem


[mysqldump]
quick
quote-names
max_allowed_packet      = 16M

[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]
key_buffer              = 16M
#
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/
like image 705
Rafael Soufraz Avatar asked Oct 01 '13 13:10

Rafael Soufraz


People also ask

What is mysqld_safe in Linux?

mysqld_safe is the recommended way to start a mysqld server on Unix. mysqld_safe adds some safety features such as restarting the server when an error occurs and logging runtime information to an error log. A description of error logging is given later in this section.

Why can't I start MySQL server?

Even with correct ownership, MySQL might fail to start up if there is other security software running on your system that manages application access to various parts of the file system. In this case, reconfigure that software to enable mysqld to access the directories it uses during normal operation.


2 Answers

This error often there is if the MySQL cannot work with own directories.

In this error you should:

  • Check the databases directory (often - /var/lib/mysql)
  • The check directory where mysql store pid file (often - /var/run/mysqld).

This directory should have a mysql:mysql user and group (or other, if MySQL runs from other user).

In your case, the directory /var/run/mysqld/ is not writable. You should change the user and group for this directory:

chown mysql:mysql /var/run/mysqld
like image 135
ZhukV Avatar answered Nov 13 '22 05:11

ZhukV


MySQL is working under it's own user so starting it under root is not a wise decision. And now when you had already tried that some of your files can be owned by root so the service will fail to start.

  • Check that all directory with MySQL database is owned by mysql user.
  • Try to start service via upstart: start mysql
  • In the directory with MySQL database check the log file.
like image 28
kworr Avatar answered Nov 13 '22 04:11

kworr