Conflicting MySQL installations with Homebrew - mysql

1) I originally installed the latest version of mysql (5.7.11) using homebrew.
2) I then also installed mysql56 using homebrew
3) I then uninstalled the original mysql homebrew install
brew search mysql currently returns a check only next to 56=>
automysqlbackup
homebrew/versions/mysql55
mysql
mysql-cluster
homebrew/versions/mysql51
homebrew/versions/mysql56 ✔
4) If I start a mysql console I get the following:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 33
Server version: 5.7.11 Homebrew
5) Running mysql> SHOW VARIABLES LIKE "%version%"; returns
+-------------------------+-----------------------+
| Variable_name | Value |
+-------------------------+-----------------------+
| innodb_version | 5.7.11 |
| protocol_version | 10 |
| slave_type_conversions | |
| tls_version | TLSv1,TLSv1.1,TLSv1.2 |
| version | 5.7.11 |
| version_comment | Homebrew |
| version_compile_machine | x86_64 |
| version_compile_os | osx10.11 |
+-------------------------+-----------------------+
8 rows in set (0.15 sec)
6) mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.7.11 |
+-----------+
7) However, mysql --version returns
mysql Ver 14.14 Distrib 5.6.29, for osx10.11 (x86_64) using EditLine wrapper
I believe I am having some mysql compatibility issues and need to be running 5.6.29, is there a way to verify that I am running 5.6?

Running ps auxww | grep mysql should give you the full path to the mysql you're actually running. Then you can do ls -l /usr/local/path/to/mysql which should show you the link into the directory with the version you're running. Should look something like ../Cellar/mysql/version/myversion.
Edit: This answer might be helpful too.

Related

PHPMyAdmin | Event Scheduler cannot enabled and get #1577 error

I've stuck on this problem for a while.
I need to schedule a job for my query daily so I have to set global event_scheduler = ON
and I got this message ..
1577 - Cannot proceed because system tables used by Event Scheduler were found damaged at server start
some guys told me i have to restart db and do it again but it's not work.
I was going to my.cnf and type event_scheduler = ON in [mysqld] section and restart again
and it's still DISABLED.
someone told me it's a bug of version 5.5 but i'm using 5.6 .....
MariaDB [(none)]> SHOW VARIABLES LIKE "%version%";
+-------------------------+---------------------+
| Variable_name | Value |
+-------------------------+---------------------+
| innodb_version | 5.6.22-72.0 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 10.0.17-MariaDB |
| version_comment | Source distribution |
| version_compile_machine | i386 |
| version_compile_os | osx10.6 |
| version_malloc_library | system |
+-------------------------+---------------------+
so I have no any idea what should i do with this thing :(
I also can't access the EVENT table in information_schema db with the same error.
if anyone can solve my problem. i'll owe you guys my entire life.
** i sincerely apologise if it's a stupid question **
Ps. I use XAMPP.
It is generally a good idea to research error codes and messages:
https://serverfault.com/questions/385015/mysql-damaged-system-tables
https://serverfault.com/questions/562282/mysqldump-error-1557-corrupt-event-table
https://serverfault.com/questions/100685/cannot-proceed-because-system-tables-used-by-event-scheduler-were-found-damaged
https://bugs.mysql.com/bug.php?id=70975

Mysql Source Distribution Version

According to this, there are only two MySQL version
Community
Enterprise
However the version that I installed from my CentOS repo, It is "Source Distribution"
mysql> show variables like '%version%';
+-------------------------+---------------------+
| Variable_name | Value |
+-------------------------+---------------------+
| protocol_version | 10 |
| version | 5.1.73 |
| version_comment | Source distribution |
| version_compile_machine | x86_64 |
| version_compile_os | redhat-linux-gnu |
+-------------------------+---------------------+
5 rows in set (0.01 sec)
I get that as I installed it via repo, it is stating "Source Distribution", but where does it fall in legal terms ?
Sorry for trouble guys. I found my answer.
After googling, found out it is just like community version, the only difference is, it is compiled and maintained by repo.

MySQL arithmetic calculation result differs between Windows and Linux

I have run this sql in windows & Linux version of mysql, and get the different result:
select (((((237803.3300+1659482.4400)/2.00)/1182208.5700)*30.00*6)+
(0.50*`(((((((1159248.2000+687984.6000)/2.00)/1527268.4000)*30.00*6)+
((((457300.0000+1707654.0300)/2.00)/1182208.5700)*30.00*6))
-(((((360.00*((1527268.4000-1182208.5700)-((2587.0000-((5354427.3100*0.0400*6)/12.00))
+99354.4800+10550.5600)))/((((((1159248.2000+687984.6000)/2.00)/1527268.4000)*30.00*6)+
((((457300.0000+1707654.0300)/2.00)/1182208.5700)*30.00*6))*0.5))-(0.50*((2587.0000-
((5354427.3100*0.0400*6)/12.00))+99354.4800+10550.5600)))*
(((((1159248.2000+687984.6000)/2.00)/1527268.4000)*30.00*6)+
((((457300.0000+1707654.0300)/2.00)/1182208.5700)*30.00*6)))/1182208.5700))-
((((237803.3300+1659482.4400)/2.00)/1182208.5700)*30.00*6)))) AS YF`
Windows version of mysql result: 105.93639914104807268662689486
Linux version of mysql result: 144.43789669025999363208811782
And I've been check this expression in some of other platform like java, excel, get the approximately value about: 105.93....., so I thought about that the calculation on linux mysql is incorrect or some of mysql variable set incorrect? Can anybody tell me why?
my linux version of mysql (At cloud server):
mysql>SHOW VARIABLES LIKE "%version%"
+-------------------------+---------------------------------+
| Variable_name | Value |
+-------------------------+---------------------------------+
| innodb_version | 1.1.8-20.1 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.18.1-Alibaba-rds-201406-log |
| version_comment | Source distribution |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+---------------------------------+
I did not look closely, but you are not selecting FROM anywhere
try this:
select (((((237803.3300+1659482.4400)/2.00)/1182208.5700)*30.00*6)+(0.50*(((((((1159248.2000+687984.6000)/2.00)/1527268.4000)*30.00*6)+((((457300.0000+1707654.0300)/2.00)/1182208.5700)*30.00*6))-(((((360.00*((1527268.4000-1182208.5700)-((2587.0000-((5354427.3100*0.0400*6)/12.00))+99354.4800+10550.5600)))/((((((1159248.2000+687984.6000)/2.00)/1527268.4000)*30.00*6)+((((457300.0000+1707654.0300)/2.00)/1182208.5700)*30.00*6))*0.5))-(0.50*((2587.0000-((5354427.3100*0.0400*6)/12.00))+99354.4800+10550.5600)))*(((((1159248.2000+687984.6000)/2.00)/1527268.4000)*30.00*6)+((((457300.0000+1707654.0300)/2.00)/1182208.5700)*30.00*6)))/1182208.5700))-((((237803.3300+1659482.4400)/2.00)/1182208.5700)*30.00*6)))) AS YF
FROM DUAL
Answer: 105.936399141048
Fiddle: http://sqlfiddle.com/#!2/a2581/32503/0

Missing databases

When I start my mysql server with usr/sbin/mysqld --skip-grant-tables --user=mysql & (debian 7) and I logged to mysql a show databases query result is this:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| UDA |
| guikuzi |
| hotel_guregas |
| merkaklub |
| mysql |
| performance_schema |
| phpmyadmin |
| superlinea |
| test |
+--------------------+
10 rows in set (0.00 sec)
and this is a info:
mysql> SHOW VARIABLES WHERE Variable_Name LIKE "%dir";
+---------------------------+----------------------------+
| Variable_name | Value |
+---------------------------+----------------------------+
| basedir | /usr |
| character_sets_dir | /usr/share/mysql/charsets/ |
| datadir | /var/lib/mysql/ |
| innodb_data_home_dir | |
| innodb_log_group_home_dir | ./ |
| lc_messages_dir | /usr/share/mysql/ |
| plugin_dir | /usr/lib/mysql/plugin/ |
| slave_load_tmpdir | /tmp |
| tmpdir | /tmp |
+---------------------------+----------------------------+
9 rows in set (0.00 sec)
After that if I stopped this mysql server and start via /etc/init.d/mysql start I have this:
# /etc/init.d/mysql start 3 ↵
[ ok ] Starting mysql (via systemctl): mysql.service.
[root#debian:~]
# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 47
Server version: 5.5.35-0+wheezy1 (Debian)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
+--------------------+
2 rows in set (0.01 sec)
mysql> SHOW VARIABLES WHERE Variable_Name LIKE "%dir";
+---------------------------+----------------------------+
| Variable_name | Value |
+---------------------------+----------------------------+
| basedir | /usr |
| character_sets_dir | /usr/share/mysql/charsets/ |
| datadir | /var/lib/mysql/ |
| innodb_data_home_dir | |
| innodb_log_group_home_dir | ./ |
| lc_messages_dir | /usr/share/mysql/ |
| plugin_dir | /usr/lib/mysql/plugin/ |
| slave_load_tmpdir | /tmp |
| tmpdir | /tmp |
+---------------------------+----------------------------+
What´s is happening? I started the safe mode because I have to reset root password, but it´s not working either. Now I have my server in safe mode and it is working but I think that is not the best way
Any help or clue?
Thanks in advance
Based on your post, It's quite obvious that in the first instance you started MySQL server without its privilege system turned on (--skip-grant-tables). This option turns off MySQL's internal privilege system, which gives anyone unrestricted access to all databases. So when you connected to the database server through your client, you bypassed any privilege checks and you could see all databases.
--skip-grant-tables This option causes the server to start without using the privilege system at all, which gives anyone with access to
the server unrestricted access to all databases.
"
See related MySQL docs for more info.
In the second instance, you started MySQL normally, the privilege system was turned on which means that connecting users may perform operations that are permitted to them based on their identity.
The MySQL privilege system ensures that all users may perform only the
operations permitted to them. As a user, when you connect to a MySQL
server, your identity is determined by the host from which you connect
and the user name you specify. When you issue requests after
connecting, the system grants privileges according to your identity
and what you want to do.
See more info in the related MySQL docs.
Also, have a look at the answer to this post how to see which user is authenticated to your current MySQL session.
More simple, just type a "\s" and to see basic status information in the MySQL client prompt. For e.g.:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 38
Server version: 5.5.35-0ubuntu0.13.10.2 (Ubuntu)
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> \s
--------------
mysql Ver 14.14 Distrib 5.5.35, for debian-linux-gnu (x86_64) using readline 6.2
Connection id: 37
Current database:
Current user: ubuntu#localhost
(...)
I hope the above helps. I tried to show you a basic pointer how to go about troubleshooting such a situation!

InnoDB Plugin Version command?

Is there any way to make MySQL tell you what version of the InnoDB plugin it's running? I know you can look at the documentation, but I'm trying to verify a potential bug if the plugin jives with the mysql version installed.
mysql> show variables like '%version%';
+-------------------------+------------------------------+
| Variable_name | Value |
+-------------------------+------------------------------+
| protocol_version | 10 |
| version | 5.1.50-community-log |
| version_comment | MySQL Community Server (GPL) |
| version_compile_machine | x86_64 |
| version_compile_os | unknown-linux-gnu |
+-------------------------+------------------------------+
I found the answer, so I'll pass this along.
1.You must be running the InnoDB plugin instead of the built-in mysql innodb. To do this, you must make these config changes to your my.cnf:
ignore_builtin_innodb
plugin-load = innodb=ha_innodb_plugin.so;innodb_trx=ha_innodb_plugin.so;innodb_locks=ha_innodb_plugin.so;innodb_lock_waits=ha_innodb_plugin.so;innodb_cmp=ha_innodb_plugin.so;innodb_cmp_reset=ha_innodb_plugin.so;innodb_cmpmem=ha_innodb_plugin.so;innodb_cmpmem_reset=ha_innodb_plugin.so
innodb_fast_shutdown = 0
Note: Load individual plugins, but make sure no spaces between the ";". Also innodb_fast_shutdown is optional, but recommended.
2.You must restart mysqld to take the new config changes.
3.Using your SQL interface, execute: "SELECT ##innodb_version;"
mysql> SELECT ##innodb_version;
+------------------+
| ##innodb_version |
+------------------+
| 1.0.11 |
+------------------+
1 row in set (0.00 sec)
Reference URLs:
Getting the version:
http://dev.mysql.com/doc/refman/5.1/en/innodb-parameters.html#sysvar_innodb_version
Using the plugin engine
http://dev.mysql.com/doc/refman/5.1/en/replacing-builtin-innodb.html
When you have installed InnoDB Plugin you can check out the version by performing the following commands
SELECT * FROM information_schema.plugins;
SELECT ##innodb_version;