Error on client connections: invalid values of 'columnLabel' - mysql

I am MySQL user with workbench and Amazon RDS
Every time I try to access MySQL client connections I get this error:
Unhandled exception:
DbMySQLQuery.resultFieldStringValueByName():
MySQL_ResultSet::isNull: invalid values of 'columnLabel'
Check the log for more details
The user I am using has all the accesses of an admin/root
This error does not happen to all users, only to some
Am I forgetting to provide some kind of permission?

The proposed solution "[3 Feb 16:10] Adam Latchem" worked for me, in the context of MySQL Workbench connecting to a MariaDB database. The fix (for definiteness) is to edit the file C:\Program Files\MySQL\MySQL Workbench 8.0 CE\modules\wb_admin_connections.py at line 346, to change it from
("DB", mforms.StringColumnType, "DB", 100),
to
("db", mforms.StringColumnType, "DB", 100),
(note change of case in first argument).

There is a solution in this link that worked for me on version 8.0.28:
https://bugs.mysql.com/bug.php?id=102465
See entry "[3 Feb 16:10] Adam Latchem"

Related

Is it possible to conclude if MySQL is running from PhPMyAdmin connection error page?

After reading multiple questions of users with problems like:
forgot password
installed multiple instances of MySQL
forgot to start MySQL
etc. etc
I started to consider if it is actually possible to conclude from the error page if MySQL is running at all?
Questions with the same type of answers:
mysql said: Cannot connect: invalid settings. xampp
phpMyAdmin - can't connect - invalid setings - ever since I added a root password - locked out
MySQL Says: Cannot connect: invalid settings
But does the error page actually say this is a mysql server response or it couldn't connect (server isn't running for instance)
Take the following code:
<?php
//Step1
$db = mysqli_connect('localhost','username','password','database_name')
or die('Error connecting to MySQL server.');
?>
If one of the inputs is incorrect you will get the error:
Error connecting to MySQL server.
This could be modified into a nice looking error message (as the image above).
So does the error actually prove that MySQL is running or not?
I found a video of a walkthrough on how to fix this error. In the video you can see the servers are running. I was pretty curious about this whole issue.
Link to Youtube:
https://www.youtube.com/watch?v=8fK_DYvosA8
I'm assuming if that's how it worked for the video, that's how it works in general. I'm working off the idea that something can't give you an error message unless it's running.
Sort of. phpMyAdmin generally returns the error message that it gets from MySQL, so for instance if the isn't a MySQL daemon listening on on the TCP/IP protocol, phpMyAdmin shows:
#2003 - Can't connect to MySQL server on '127.0.0.1' (111) — The server is not responding.
For an incorrect username or password, the error message is:
#1045 - Access denied for user 'root'#'localhost' (using password: YES)
"Invalid settings" usually means you have conflicting directives or incorrect information in one of your configuration statements. Without seeing your config.inc.php it's difficult to guess what's wrong here, but this also can mean something went wrong between the PHP library itself and MySQL.
The rejected connection message you posted can also have several causes.
Basically, to directly answer your question, you often can tell based on the error message returned by MySQL or the PHP library (which is the message phpMyAdmin shows). "Can't connect" means phpMyAdmin couldn't get any response from the MySQL daemon, which could have several causes but most often means MySQL isn't running. Most of the other error messages mean it's running but there was a problem connecting. Generally the error message contains some information about why.

Lost connection to MySQL server at 'waiting for initial communication packet'

I have seen many stack overflows questions and some blogs tried workarounds, but nothings helped - hence re-posting the question with more details.
I am seeing the weird behaviour with MySQL and Python application, details are as follows:
1) My application works perfectly fine with MySQL (tried and tested on many platforms) but on this particular machine it fails to connect to MySQL.
structure of application is :
Windows service -> parent process -> Mysql(child process)
and when application tries to connect to MySQL it get this error:
ERROR 2013 , Lost connection to MySQL server at 'waiting for initial communication packet' - system error 0
I tried:
- connect_timeout=300
- skip-name-resolve=0
- firewall is OFF
- use 17.0.0.1, localhost , IP of machine to connect to but it still fails with same error.
2) Now the weird thing is -
If I manually follow all the steps which application does, It works perfectly fine, details are follows:
a) Start MySQL with same command (which application uses) with administrator privileges
mysql --default-file = xxx --basedir =xxx
b) Connect with same credentials ( -u root -P 6075 -h 127.0.0.1) and
It works perfectly fine, I double checked all the steps which application does, there is no difference between manually steps and application code.
AM I missing something here ? Any suggestions ?
MySQL version : 5.5.35
Python : 2.7
Base OS : Windows 2012 R2
Thanks in advance..
Found a reason - answering my question:
When I used to run MySQL from my application - it was running under system user privileges - so it used to pick "C:\WINDOWS\TEMP" as a temp directory- this directory was messed up - has lot of unnecessary files .. and MySQL was stuck while processing files under this directory...
But when I ran it manually under My administrator account it was using his temp directory... C:\Users\USER_NAME\AppData\Local\Temp and everything was working like magic...
To fix this permanently I changed tmp directory through MySQL conf file and now My Application runs like the Wind.... :)
[mysqld]
tmpdir = 'PATH_TO_THE_DIRECTORY'
I was getting this same error trying to set up a SQL Server Linked Server
Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "DBLINKED".
OLE DB provider "MSDASQL" for linked server "DBLINKED" returned message "[MySQL][ODBC 8.0(w) Driver]Lost connection to MySQL server at 'waiting for initial communication packet', system error: 10060". (Microsoft SQL Server, Error: 7303)
You mentioned it in your initial question - the Connection Timeout was the issue for me.
The default is 0 - raised it to 300. I thought default of 0 would mean no timeout, but it's obviously something reasonably short, and I was trying to connect to a remote database on a slow internet connection. A lot of other question and answers out there relate to connecting within the same machine, so this error isn't reported much.

how to resolve error 17836, Severity: 20, State: 14?

Length specified in network packet payload did not match number of bytes read; the connection has been closed. Please contact the vendor of the client library.
Error: 17836, Severity: 20, State: 14. I am getting this error 5 times at the same time almost and want to know the reason for its occurrence.
See the solution here:
Since the SQL Server has Event ID 17836 logged, the SQL port is open.
It is more like authentication issue. Based on this articles
(Configuration for querying SQL database remotely –
http://www.howtonetworking.com/others/testsqlconnect2.htm ), we may
have 3 fixes:
creating SQL login ID (recommended)
join the computer to the domain
allow anonymous connections to SQL Server 2000 or to SQL Server 2005 (don’t recommend)
And this MSDN forum
Perform a nslookup of the CLIENT IP Address that is listed in the
error message and find out what computer it is that is connecting.
Then you need to check that machine and determine what specifically is
connecting to the SQL Server. You might get more infromation from
doing a SQL Trace for the Errors and Warnings Event Class and have the
ClientProcessID column in the trace data. When the error spikes, you
might get the PID for the process that is connecting from that
10.26.32.96 machine, and then you can find that process in Task Manager on that machine by adding the PID to the data displayed (View
-> Select Columns).
In my case, these events coincided with me doing telnet connectivity tests to our SQL Servers. We would see one entry in the Windows Event Log for each instance we successfully did a telnet to.

Database SSH connection cannot be established from Workbench

I can't establish a database connection from MySQL client Workbench through SSH. If I click Test Connection I get the error: ERROR local variable 'chan' referenced before assignment in the first step.
However I was able to connect from MySQL server through the command line, via SSH. I was also able to connect to my local database with Workbench. I am using Ubuntu with KDE 14.10 and the problem started with the update, so I guess it has to do with that, but I don't know how. Please let me know if you'd like further information.
Thank you in advance,
PS I saw a similar problem without a solution here.
Here a solution to fix this issue under Debian/Ubuntu:
1 First, close Mysql Workbench!
2 Apply the patch:
sudo cd /usr/lib/mysql-workbench/
sudo wget https://launchpadlibrarian.net/189450207/paramiko.patch
sudo patch -p1 < paramiko.patch
3 Start Mysql Workbench, it's now working!
If you use python 2.x, try using python3?
This bug is probably related: http://bugs.mysql.com/bug.php?id=74960
Edit: confirmed, I have tried with python 2.x and have this error into mysql/workbench/log/wb.log:
5:35:38 [INF][wb_admin_control.py:query_server_installation_info:767]: Currently connected to MySQL server version 'unknown', conn status = None, active plugins = []
15:35:38 [ERR][sshtunnel.py:notify_exception_error:233]: Traceback (most recent call last):
File "/usr/share/mysql-workbench/sshtunnel.py", line 315, in accept_client
sshchan = transport.open_channel('direct-tcpip', self._target, local_sock.getpeername())
File "/usr/lib/mysql-workbench/modules/wb_admin_ssh.py", line 116, in wba_open_channel
raise e
EOFError
15:35:38 [ERR][wb_admin_control.py:server_polling_thread:492]: Error creating SQL connection for monitoring: MySQLError("Lost connection to MySQL server at 'reading initial communication packet', system error: 0 (code 2013)",)
15:35:56 [INF][ base library]: Notification GNFocusChanged is not registered

Remote mySQL connection throws "cannot connect to MySQL 4.1+ using the old insecure authentication" error from XAMPP

I'm running a local copy of WordPress on XAMPP/WinXP for development, but would like to maintain a connection to the remote database. I keep getting "Error establishing database connection" no matter what I try.
On the same PC, I can connect to the remote mySQL DB using any number of mySQL clients, and on the mySQL side, the both the user and the database are set to accept incoming requests from any wildcard domain. I can also easily ping the remote database server from my PC (though I don't know how to do it from WITHIN XAMPP).
Is XAMPP its own little universe that can't reach through to the outside world? Or is there something I'm clearly overlooking that's not letting me connect?
Errors
Warning: mysql_connect() [function.mysql-connect]: Premature end of data (mysqlnd_wireprotocol.c:553) in C:\xampp\htdocs\dbtest.php on line 5
Warning: mysql_connect() [function.mysql-connect]: OK packet 1 bytes shorter than expected in C:\xampp\htdocs\dbtest.php on line 5
Warning: mysql_connect() [function.mysql-connect]: mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication
Edit
Thanks to #Michael for suggesting I just create a simple connection script so I can get better insight into the actual error that's being thrown. This revealed that it had to do with the old_password setting in mySQL. See my Answer below for a full description of how to resolve this issue.
Here's the test script I put inside my xampp\htdocs folder and tested out:
<?php
$mysqli = new mysqli('my.server.address', 'user_name', 'password', 'database_name');
if ($mysqli->connect_error){
die ("Connect error: " . $mysqli->connect_error );
}
I'm not really clear on why this became an issue on my XAMPP installation, since I'm also running PHP 5.3.x on the server's local box and wasn't experiencing those issues there. However, it has to do with my mySQL server running in "old password" encryption mode. Newer versions of PHP won't allow those kinds of connections, so you need to update your mySQL server to use the newer password encryption. Here are the steps, assuming you have control over the mySQL server. If you don't, that falls out of the scope of my knowledge.
locate the configuration file for the mysql server called my.cnf. I found mine at /etc/my.cnf. You can edit it with sudo nano /etc/my.cnf
Look for a line that says old_passwords=1 and change that to old_passwords=0. You have now told the server that the next time it is run, and it is asked to encrypt a password using the PASSWORD() command, it use the new 41-character encryption rather than the 16-character 'old' style encryption
Now you have to restart your mysql server / service. YMMV, but on Fedora that was easily done with sudo service mysqld restart. Check your OS' instructions for restarting the mysql daemon or service
Now we have to actually edit our user table within mysql. So open up an interactive shell to mysql (on the server you can type mysql -uYourRootUsername -pYourRootPassword)
Change to the mysql database. This is the database that holds all the good stuff for server operation and authentication. You must have root access to work with this database. If you get an 'access denied' you're SOL. Sorry. use mysql; will switch to that database
Now we want to update the user that was giving you grief. Ultimately you'll probably want to update all your users, but for now, we're just focusing on the user that threw the error. update user set Password=password('YOUR_PASSWORD') where User='YOUR_USERNAME';
Now you just need to tell mysql to use the new password for authentication when that user attempts to connect. flush privileges;.
You should be good to go!