mysql - 无法在 MySQL 上切换用户
问题描述
我使用带有 CPanel 的网络托管。在 MySQL 数据库工具中,我创建了一个用户 - “realuser_user1”并授予数据库 realuser_Goods 的所有权限。在 phpMyAdmin 中,我以 realuser@localhost 身份登录(我认为这与主机提供商发送给我的用户名相同,但出于某种原因使用此“@localhost”),我想切换到 realuser_user1,所以我输入控制台,
mysql -u realuser_user1 -p
(我按 Ctrl-Enter)弹出一个窗口,有 4 个错误:
- 出乎意料的声明开头。(在位置 0 的“mysql”附近)
- 出乎意料的声明开头。(靠近位置 7 的“u”)
- 出乎意料的声明开头。(靠近位置 9 的“website1_user1”)
- 出乎意料的声明开头。(靠近位置 25 的“p”)
#1064 - 错误编号
我做错了什么?
解决方案
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.1
Host 权限的用户身份连接,我需要编辑我的配置文件config.inc.php
以将 connect_type 从“socket”更改为“tcp”。出于安全目的不过,通常最好尽可能限制用户,所以我大部分时间都坚持使用套接字连接。
因此,要解决您的问题,您应该尝试以身份realuser_user1
而不是realuser_user1@localhost
. 如果这不起作用,请检查您的 phpMyAdmin 页面以查看您从哪个主机连接,以您的管理用户身份登录并创建一个附加用户或更改主机realuser_user1
以匹配(再次,我建议使用最严格的主机名或IP地址可以)。
推荐阅读
- video-streaming - COTURN 使用过多的 CPU !这是正常的吗?
- docker - 未知指令“passenger_app_group_name”
- android-studio - Flutter 在 Android Studio 中运行多个单元测试
- python - Django 在错误的地址使用格式错误的 urls.py 提供错误的模板(编辑器应用程序)
- php - 想要在调用 getdownloadUrl 方法时将 Url 存储在从 Firebase 存储返回的 phpmyadmin 中
- c++ - 在 qt 应用程序中使用 chromium 嵌入式框架
- azure - 如何将 Azure 流分析中的“类字典”结构转换为带有 javascript UDF 的多维数组?
- c++ - 布尔值的 std::stoi 替代品
- angular - Angular Autocomplete 无法获取 id 值并显示对象属性
- flutter - 我如何在颤动中设计上面的产品卡