我刚刚将Ubuntu从15.10升级到16.04,将MySQL从5.6升级到5.7。
我以前没有root密码(它只是一个本地开发虚拟机)。我无法做到" mysql -u root"作为一个没有特权的用户,但是当我更改为root ubuntu用户时,我可以毫无问题地启动mysql客户端。两个用户的mysql二进制文件是相同的,所以那里没有任何诡计。
user@ubuntu:~$ mysql -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
user@ubuntu:~$ sudo -u root -i
root@ubuntu:~# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.12-0ubuntu1 (Ubuntu)
更改主机设置(localhost与127.0.0.1)没有任何影响。 mysql.user表的内容是:
+-----------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| Host | User | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | Create_tablespace_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections | plugin | authentication_string | password_expired | password_last_changed | password_lifetime | account_locked |
+-----------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| localhost | root | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 | auth_socket | | N | 2016-05-04 21:46:45 | NULL | N |
| ubuntu | root | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 | mysql_native_password | | N | 2016-05-04 21:46:45 | NULL | N |
| 127.0.0.1 | root | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 | mysql_native_password | | N | 2016-05-04 21:46:45 | NULL | N |
+-----------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
关于如何更好地调试此处发生的事情的任何想法都将非常感激。
答案 0 :(得分:3)
我发现了问题!
在升级期间,MySQL添加了auth_socket
插件类型。这种调整意味着当连接到localhost时,我不能简单地添加" -uroot"标记并期望它工作,因为MySQL将当前用户的名称与请求的mysql名称进行比较。来自MySQL的更有用的错误消息在这里很不错。
如果登录名为stefanie的本地主机上的用户使用选项
T
调用B
来通过套接字文件进行连接,则服务器使用mysql
对客户端进行身份验证。该插件确定--user=valerie
选项值(auth_socket
)与客户端用户的名称(--user
)不同,并拒绝连接。如果名为valerie
的用户尝试相同的操作,则插件会发现用户名和MySQL用户名都是stephanie
并允许连接。但是,如果使用不同的协议(例如TCP / IP)建立连接,则插件即使valerie
也拒绝连接。
答案 1 :(得分:0)
除非您为自己的帐户设置了密码,否则使用-p
标记无效。您必须reset your root password。
答案 2 :(得分:-2)
我建议使用int* ptr = malloc(sizeof (*ptr));
bool b = *ptr == 0; // always true?
,所有单词或mysql -uroot
,这样您就可以选择输入密码或设置密码。