我比“新手”还年轻,所以我确信大多数人都会对我的问题发笑。我已经通过搜索借助所有信息成功安装了 Ubuntu 16、Mysql、PHPMyadmin、MySql Workbench 和其他几个应用程序。基本上,我最大的问题是我无法访问 Mysql 数据库。以下是我测试时的一些结果。
远程登录
[5.7.17-0ubuntu0.16.04.1Z<L!k8Mk[>rGZM 3:7mysql_native_password Connection to host lost
尝试在 Windows 10 系统上的 Access 中获取外部数据。我选择使用 SQL Server 身份验证并输入登录 ID 和密码(我已经为 Mysql 创建了一个用户)
Connection Failed: SQLState: '01000' SQL Server Error: 2
还有更多内容,当我查看网页时,我被要求编辑/etc/mysql/my.cnf
。还说:
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
我可以'myuser'@'localhost'
用我的实际用户名来代替吗?那怎么办'mypass'
?
答案1
您需要配置一个用户进行远程访问。这将使您可以使用任何客户端(包括 Microsoft Access)连接到数据库。
首先,通过编辑 mysql 服务器的配置文件来启用对数据库的远程访问。您可以在/etc/mysql/mysql.conf.d/mysqld.conf
查找此链接并确保它已被注释掉或删除此行:
# bind-address = 127.0.0.1
如果您对文件进行了更改,请务必使用以下命令重新启动 mysql 服务器:
$ sudo systemctl restart mysql
现在您必须创建一个用户,或者确保当前用户可以远程连接。您可以通过终端命令按照以下步骤执行此操作:
$ mysql -u 根 -p
使用 root 密码回答密码提示并继续:
mysql> GRANT ALL ON mydatabase.* TO 'myuser'@'%' IDENTIFIED BY 'mypass';
该命令的变量是我的数据库,我的用户, 和我的通行证。
我的数据库 - 数据库的名称 我的用户 - 有数据库访问权限的用户 我的通行证 - 用户的密码
如果不存在用户,该命令将创建用户,并为用户分配密码“mypass”或您在该字段中输入的任何密码。如果用户已经存在,它将只将“mypass”作为该用户的密码。
您可以通过从此计算机或任何计算机的命令行运行此命令来测试连接。
$ mysql -h [hostname/or IP address] -u myuser -p
按下后,ENTER
系统会提示您输入密码,如果凭证正确,则会将您连接到服务器。然后您可以运行此命令来加载数据库:
mysql> use mydatabase;
命令行测试是客户端应用程序(在本例中为 Microsoft Access)将自动执行的。配置客户端时,Microsoft Access(或任何其他图形用户界面数据库客户端,它会要求您提供以下信息:
- 主机(您提供的主机名或 IP 地址)
- 数据库
- 用户身份
- 密码
如果不存在用户,该命令将创建用户,并为用户分配密码“mypass”或您在该字段中输入的任何密码。如果用户已经存在,它将只将“mypass”作为该用户的密码。
您可以通过从此计算机或任何计算机的命令行运行此命令来测试连接。
$ mysql -h [hostname/or IP address] -u myuser -p
按下后,ENTER
系统会提示您输入密码,如果凭证正确,则会将您连接到服务器。然后您可以运行此命令来加载数据库:
mysql> use mydatabase;
命令行测试是客户端应用程序(在本例中为 Microsoft Access)将自动执行的。配置客户端时,Microsoft Access(或任何其他图形用户界面数据库客户端,它会要求您提供以下信息:
- 主机(您提供的主机名或 IP 地址)
- 数据库
- 用户身份
- 密码
默认的 mysql 端口是3306。如果您将远程配置为不同的端口,您的客户端将为您提供提供端口的选项。您必须将路由器设置为将端口转发到您的 mysql 服务器计算机。这将是端口3306或者如果您将服务器配置得与默认配置不同,则配置另一个。
要通过指定端口从命令行测试连接,您可以使用:
$ mysql -h [hostname/or IP address] --port 3306 -u myuser -p
更改3306如果您更改了默认设置,则要匹配您的服务器配置方式。
至于你的问题,“我是否应该用‘myuser’@‘localhost’来代替”,我的用户可以用你的名字,或者你决定给它起的任何名字。是否使用相同的名称由你决定。