首页 > 解决方案 > 无法在 MySQL 上切换用户

问题描述

我使用带有 CPanel 的网络托管。在 MySQL 数据库工具中,我创建了一个用户 - “realuser_user1”并授予数据库 realuser_Goods 的所有权限。在 phpMyAdmin 中,我以 realuser@localhost 身份登录(我认为这与主机提供商发送给我的用户名相同,但出于某种原因使用此“@localhost”),我想切换到 realuser_user1,所以我输入控制台,

mysql -u realuser_user1 -p

(我按 Ctrl-Enter)弹出一个窗口,有 4 个错误:

  1. 出乎意料的声明开头。(在位置 0 的“mysql”附近​​)
  2. 出乎意料的声明开头。(靠近位置 7 的“u”)
  3. 出乎意料的声明开头。(靠近位置 9 的“website1_user1”)
  4. 出乎意料的声明开头。(靠近位置 25 的“p”)

#1064 - 错误编号

我做错了什么?

标签: mysqlphpmyadmin

解决方案


mysql -u realuser_user1 -p是一个 shell 命令,所以它并不意味着通过 phpMyAdmin SQL 选项卡作为 SQL 命令运行。为了以不同的用户身份连接,您应该在连接到 phpMyAdmin 时在登录提示符处显示其他用户登录信息(或者,如果由于某种原因您使用 'config' 身份验证类型,您将编辑存储在配置文件config.inc.php)。不过,在托管情况下,您不太可能有权或需要更改配置文件。

登录 phpMyAdmin 时,您无需提供用户帐户的主机名部分。这是由连接过程中的连接类型和主机名决定的;因此,如果您realuser_user1通过套接字连接作为用户名连接,它会查找具有 Userrealuser_user1和 Host的 MySQL 用户帐户localhost。通过 TCP/IP连接root的连接(即使它连接到 127.0.0.1,这在网络意义上是“localhost” )root使用 Host%127.0.0.1. 通过编写“root@localhost”来简化连接信息是相当常见的简写,但这并不是字面意思,它是“User”和“Host”两个值的简写。您甚至可以在显示 User: 字段的 phpMyAdmin 主页上看到缩短的表单。

在phpMyAdmin中,您可以在主页上看到连接类型(在右侧,它是“数据库服务器”下的第一项,例如我的读取Server: Localhost via UNIX socket。这表明我的用户与主机localhost连接,所以任何其他用户我想根据需要连接 localhost 权限。如果我需要以仅具有%127.0.0.1Host 权限的用户身份连接,我需要编辑我的配置文件config.inc.php以将 connect_type 从“socket”更改为“tcp”。出于安全目的不过,通常最好尽可能限制用户,所以我大部分时间都坚持使用套接字连接。

因此,要解决您的问题,您应该尝试以身份realuser_user1而不是realuser_user1@localhost. 如果这不起作用,请检查您的 phpMyAdmin 页面以查看您从哪个主机连接,以您的管理用户身份登录并创建一个附加用户或更改主机realuser_user1以匹配(再次,我建议使用最严格的主机名或IP地址可以)。


推荐阅读