Can't set mysql database in SSH - mysql

I am using a VPS Ubuntu 20.04 in a2 hosting. I am trying to set up my mysql database but I am getting some error. I am doing this through a SSH. I installed mysql using
sudo apt-get install mysql-server mysql-client
and it installed just fine. But when I try to run
sudo mysql_secure_installation
it throws me this error
Error: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
I have tried to reinstall mysql-server, but without success. I have noticed some errors:
In my /etc/mysql/my.cnf file, it looks like is missing some code, I just have this:
It doesn't have any information about the socket.
My /var/run/mysqld/mysqld.sock file was not created when I installed the db. Not even the folder /var/run/mysqld was created. I tried to create both, but it still doesn't worked. In my example, the files are being created in a wrong way ou not even being created. I don't know why this is happening.
FIle: /etc/mysql/mysql.conf.d/mysqld.cnf
#
# The MySQL database server configuration file.
#
# 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
# Here is entries for some specific programs
# The following values assume you have at least 32M ram
[mysqld]
#
# * Basic Settings
#
user = mysql
# pid-file = /var/run/mysqld/mysqld.pid
# socket = /var/run/mysqld/mysqld.sock
# port = 3306
# datadir = /var/lib/mysql
# If MySQL is running as a replication slave, this should be
# changed. Ref https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_tmpdir
# tmpdir = /tmp
#
# 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
mysqlx-bind-address = 127.0.0.1
#
# * Fine Tuning
#
key_buffer_size = 16M
# max_allowed_packet = 64M
# thread_stack = 256K
# thread_cache_size = -1
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover-options = BACKUP
# max_connections = 151
# table_open_cache = 4000
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
#
# Log all queries
# Be aware that this log type is a performance killer.
# general_log_file = /var/log/mysql/query.log
# general_log = 1
#
# Error log - should be very few entries.
#
log_error = /var/log/mysql/error.log
#
# Here you can see queries with especially long duration
# slow_query_log = 1
# slow_query_log_file = /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
# binlog_expire_logs_seconds = 2592000
max_binlog_size = 100M
# binlog_do_db = include_database_name
# binlog_ignore_db = include_database_name
Is there anything I am missing? If someone could help me I would be grateful. Thank you!

For anyone who have the same error, I solve this by reinstalling my entire OS. My ubuntu version was 20.04 and I installed the 18.04 version. This solved for me.

Related

MySQL error 111 (Can't connect to MySQL server on 'x.x.x.x')

I have MySQL running on an Ubuntu 20.04 machine. I'm trying to connect to it with an external connection but am getting met with error 111 (Can't connect to MySQL server on 'x.x.x.x'). I know this is supposed to be a refusal, and I found other threads that say to comment (or change) the bind-address line in /etc/mysql/mysql.conf.d, however doing so made no difference for me. I don't know what I'm missing here. I have tried to make new users and try again but I don't think that will aid the issue seeing as its a straight up connection refusal.
Here is my full /etc/mysql/mysql.conf.d:
#
# The MySQL database server configuration file.
#
# 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
# Here is entries for some specific programs
# The following values assume you have at least 32M ram
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
datadir = /var/lib/mysql
# If MySQL is running as a replication slave, this should be
# changed. Ref https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_tmpdir
# tmpdir = /tmp
#
# 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_size = 16M
# max_allowed_packet = 64M
# thread_stack = 256K
# thread_cache_size = -1
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover-options = BACKUP
# max_connections = 151
# table_open_cache = 4000
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
#
# Log all queries
# Be aware that this log type is a performance killer.
# general_log_file = /var/log/mysql/query.log
# general_log = 1
#
# Error log - should be very few entries.
#
log_error = /var/log/mysql/error.log
#
# Here you can see queries with especially long duration
# slow_query_log = 1
# slow_query_log_file = /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
# binlog_expire_logs_seconds = 2592000
max_binlog_size = 100M
# binlog_do_db = include_database_name
# binlog_ignore_db = include_database_name
As you can see, not only is bind-address commented out, but I also tried setting it to 0.0.0.0 before doing so. Is there anything else I can check? Any help is greatly appreciated.

Unable To Connect The Specified MySQL Hosts

I have an application that requires my users to connect to an online MySQL database through "remote access" from ANY IP address (the IP address from their own internet network) so that it confirms they are in the database prior to accessing the software.
I have tried to run command lines in my Linux terminal to allow ALL users to connect remotely from any ip address using the following command:
GRANT ALL ON database_name.* TO root#'%' IDENTIFIED BY 'user_password';
I have configured my MySQL database server configuration file to enable proper remote connection (I believe).
My "MySQL database server configuration file" located in /etc/mysql/mysql.conf.d/mysqld.cnf looks like the following below:
#
# 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.
# Here is entries for some specific programs
# The following values assume you have at least 32M ram
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[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 = 0.0.0.0
#require_secure_transport = on
#
# * 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_open_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
#
# Here you can see queries with especially long duration
#slow_query_log = 1
#slow_query_log_file = /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
I have also tried to unblock the FireWall to enable tcp connection using the following command line:
sudo ufw allow 3306/tcp
My connection string from my desktop application looks like this:
MysqlConn.ConnectionString = "server=MyServerIPaddress;Port=3306;database=MyDatabaseName;Uid=root;Pwd=MyPassword;Connect Timeout=30;SslMode=none;"
My users still get the "Unable to connect to any of the specified mysql hosts." error message.
Any support is appreciated.
That's a giant point of an API; to expose some set of predefined functionality in a controlled manner without having to expose the soft underbelly of a site or system by dismantling the security.
https://www.dreamincode.net/forums/topic/263768-setting-up-a-php-web-service-to-be-consumed-by-vbnet/

Huge latency to connect webapp to docker mysql container via Hibernate

I'm trying to port my web-app created on Windows, using Hibernate, XAMPP for Apache tomcat and mysql server, to Linux, using Docker.
After i've done the following steps, The first feature of my web.app is login/register form: On Windows all works perfectly, but with container there is latency about tens of minutes.. and sometime there is also 500 http error!!
docker run -d --name mysql-phpmyadmin -p 127.0.0.1:8686:80 -p 127.0.0.1:3306:3306 grzesiekb/mysql-phpmyadmin
docker run -d -p 8484:8080 -p 8007:8009 --name tomcat8-linked --link mysql-phpmyadmin:mysqlphp tomcat:8.0-jre8 and then deploy under webapps/ folder my warfile
In my hibernate.cfg.xml, you can see it here (i have problems to paste it in a viewable way) :)
in my mysql container my.cnf there is:
[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
#
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 = 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 = 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
#
# Here you can see queries with especially long duration
#slow_query_log_file = /var/log/mysql/mysql-slow.log
#slow_query_log = 1
#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/
By default, this mysql container only allows connection from localhost: for allowing connections from everywhere, i've done:
GRANT ALL PRIVILEGES ON . TO 'root'#'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Then i've imported my dql dump via phpmyadmin
Describe the results you received:
Huge latency, related to i don't know which problem, and in a random way there is no way to connect to mysql. No logs. My teacher said that probably it's a DNS problem related to Docker network.
Describe the results you expected:
Connection to the db immediately, like in Windows using XAMPP
You should try to make your setup as standard as possible to avoid bugs due to non-standard practices.
Use official or at least popular images (with millions of pulls) instead of your mysql-phpmyadmin with a hundred pulls :
https://hub.docker.com/search/?isAutomated=0&isOfficial=1&page=1&pullCount=0&q=mysql
https://hub.docker.com/search/?isAutomated=0&isOfficial=0&page=1&pullCount=0&q=phpmyadmin
I'm not sure why you declare ip with host port and container port, maybe don't do this if it's not necessary, publish only host port and container port, not ip.
Don't use --link since it's deprecated, create a bridge network and run each container with --network my-bridge-network.
Upgrade your Ubuntu to the latest LTS version (16.04.2) with the latest available "HWE" kernel for this LTS version (you have to upgrade kernel with a seperate command as explained here : sudo apt-get install --install-recommends xserver-xorg-hwe-16.04

MySQLWorkbench :Cannot connect MySQL server

When i try to connect to the MySQL server i am incurring following error messages
Kindly let me know what is the problem with my MySQL server
dev#dev-ThinkPad-X1-Carbon-3rd:~$ ifconfig|grep "inet addr"
inet addr:127.0.0.1 Mask:255.0.0.0
inet addr:192.168.170.50 Bcast:192.168.170.255 Mask:255.255.255.0
dev#dev-ThinkPad-X1-Carbon-3rd:~$ mysql -ubeer -pbeer -h192.168.170.50
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.170.50' (111)
dev#dev-ThinkPad-X1-Carbon-3rd:~$ mysql -ubeer -pbeer -h127.0.0.1
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)
dev#dev-ThinkPad-X1-Carbon-3rd:~$ mysql -ubeer -pbeer -hlocalhost
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
This is my.cnf file should i make some changes in my.cnf inorder to connect to MySQL server ?
[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
#
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 = 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 = 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
#
# 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/
Is this a fresh installation? If so, please check if mysql-server installed instead of mysql-client
sudo apt install mysql-server
Also, try changing this line in your my.cnf to:
bind-address = 0.0.0.0
After that
sudo service mysql restart
ANOTHER POSSIBILITY:
You may want to try finding the socket like this:
sudo find / -type s
Once found, you can create a symlink to a temporary folder like this:
sudo ln -s /path-to-socket/mysqld.sock /tmp/mysql.sock
After all this, you may want to reinstall MySQL Server and installing it again.

can't get logging to work on mariadb

I'm trying to get the general logging in mariadb enabled so i can see all the queries being generated against my database.
I'm running version 5.5 on ubuntu:
MariaDB [(none)]> show variables like '%Version';
+------------------+---------------------------------+
| Variable_name | Value |
+------------------+---------------------------------+
| innodb_version | 5.5.43-MariaDB-37.2 |
| protocol_version | 10 |
| version | 5.5.44-MariaDB-1ubuntu0.14.04.1 |
+------------------+---------------------------------+
3 rows in set (0.03 sec)
MariaDB [(none)]>
In my my.cnf file, here's what I've attempted to add in the [mysqld] section:
general-log
general-log-file=queries.log
log-output=file
The reference I was using can be found here: https://mariadb.com/kb/en/mariadb/general-query-log/
When I restart my database using "/etc/init.d/mysql restart", and I start requesting pages via my web application, I can't find any log files being generated eventhough I'm certain the database is being queried.
Any suggestions?
EDIT 1
Upon closer examination, I've noticed that the error log isn't working either.
When I restart mysql, I get the following messages:
myuser#dev:/etc/mysql$ sudo /etc/init.d/mysql restart
* Stopping MariaDB database server mysqld [fail]
* Starting MariaDB database server mysqld [ OK ]
Notice how the stop command fails. But I can't find any error logs.
This is my entire msqld section in my.cnf:
[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 = 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 = 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
general-log-file=queries.log
log-output=file
#
# Error log - should be very few entries.
#
log_error = /var/log/mysql/error.log
#
# 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
EDIT 2
Results from "show variables like '%log%'" command is pasted here:
http://pastebin.com/Zt8xFxLN
Line 18 seems to be my problem and maybe line 30 for the error logs?
If i change these values via command line, will it only last for the current session?
Something stood out to me while reading the documentation in your first link:
By adding this to your my.cnf file all queries will be logged to the file queries.log in the datadir directory.
So, I enabled it and had a look at the contents of /var/lib/mysql (the mysql/mariadb datadir).
And there it was - queries.log
The datadir isn't exactly where I'd expect it to be either, but the docs say so. I'd rather see it in /var/log/mysql (it is a log, after all), so I changed the above configuration to a full path (/var/log/mysql/queries.log). The result is as expected, the log ends up in /var/log/mysql
yay!
Seems that things changed since this discussion. As of today, I can enable logging with
mysql -e "SET GLOBAL general_log=1;"
mysql -e "SET GLOBAL general_log_file='all_query.log';"
less +F /var/lib/mysql/all_query.log
Note that the file appears in /var/lib/mysql, rather than in /var/log/mysql ...
I ran the following command on the mysql commandline:
set global log="on"