如何从命令行连接到MySQL。

360

你如何在Mac上从命令行连接到MySQL?(即给我展示代码)

我正在进行PHP/SQL教程,但它假设你已经在MySQL中。

15个回答

619

请查看这里 http://dev.mysql.com/doc/refman/5.0/en/connecting.html

mysql -u USERNAME -pPASSWORD -h HOSTNAMEORIP DATABASENAME 

以上选项含义如下:

-u: username
-p: password (**no space between -p and the password text**)
-h: host
last one is name of the database that you wanted to connect. 

点击链接查看详细内容!


正如Rick所提到的,您可以通过不像这样传递密码来避免将密码作为命令的一部分传递:

mysql -u USERNAME -h HOSTNAMEORIP DATABASENAME -p

编辑此回答的人们:请勿在-pPASSWORD之间添加空格。


1
谢谢您。2个问题:1)必须包含“-u”、“-p”等吗?还是用用户名等替换它们?2)如果没有创建数据库,只需留空吗? - Leahcim
2
可以基于您登录的用户设置MySQL身份验证,或者根本不进行身份验证,但这两种方法都不是一个好主意。在命令行上指定密码甚至是一种轻微的安全风险,因为它最终会出现在您的命令历史记录和进程表中。如果您省略密码,系统会提示您输入密码。 - dj_segfault
3
如果你在离开"-p"时没有指定密码,它会提示你输入密码。 - Nishant
1
如果你当前没有创建数据库,你需要使用mysqladmin命令来创建一个。但我相信当你安装服务器时,默认的“mysql”数据库会被创建,它保存了所有模式和认证信息。如果你有足够的权限,你可以登录该数据库并从那里创建其他数据库。 - dj_segfault
1
使用-P参数可以使用非默认端口。 - Santa
显示剩余4条评论

186

最佳实践是使用mysql -u root -p命令。 然后,在按下回车键后,MySQL会提示输入密码。


32
详细来说,这可以防止你的密码出现在.bash_history文件中。使用当前得票最高的方法,如果有人获得了对$HOME(因此是.bash_history)的访问权限,他们也将获得您的身份验证信息——令人恐惧!这种入侵可能会发生(并且确实已经发生过,详见http://arstechnica.com/security/2015/08/0-day-attack-on-firefox-users-stole-password-and-key-data-patch-now/)。 - Jeremy
你可以执行一个bash命令,而不让它出现在.bash_profile中。在这里阅读更多信息:http://www.commandlinefu.com/commands/view/1512/execute-a-command-without-saving-it-in-the-history#comment - Skid Kadda
@Jeremy 不仅在.bash_history中,在top和更多的工具中也是如此!你甚至可以让你的文件安全,只需与另一个合法用户共享电脑。 - Melebius
+1 是因为我的密码里有特殊符号,如果作为命令的一部分就无法解析,必须单独处理。 - Jacksonkr

24

运行MySQL Shell后,您会看到以下内容:

mysql-js>

首先,你应该:

mysql-js>\sql

其次:

 mysql-sql>\connect username@servername (root@localhost)

最后:

Enter password:*********

如果我只有Shell,如何导入MySQL文件?它无法查看我的本地文件系统。我需要一个客户端还是Shell就是客户端? - Timo

15

简短、精练、完整且安全:

mysql -u <用户名> -h <主机名> -P <端口号> <数据库名> -p

这将会:

  1. 连接您到一个远程数据库(包括端口)
  2. 不会将您的密码存储在您的.bash_history文件中

13

使用以下命令连接到您的MySQL数据库

mysql -u用户名 -h主机名 -p


6

使用适当的MySQL用户名和密码直接连接MySQL的一种方式是:

mysql --user=root --password=mypass

这里,
root is the MySQL username
mypass is the MySQL user password

这是有用的,如果你有一个空白密码。
例如,如果你有一个名为 root 的 MySQL 用户,并且使用的是空密码,只需使用
mysql --user=root --password=

6
使用下面的命令,每个人都可以登录到 MySQL:
mysql -u root -p

你需要在运行上面命令后设置密码:
Enter password: *****

5

使用以下命令登录到远程mysql服务器:

mysql -u property_wlive  -h 127.0.0.1 -P 3306 property_plive -p

4
有时候您可能需要添加-P参数来指定端口:
mysql -u USERNAME -pPASSWORD -h HOSTNAME -P PORTNUMBER DATABASE;

3

很奇怪,尽管有很多(类似的)答案,但没有人建议这样做:

您可以在$HOME文件夹中创建一个名为.my.cnf的文件,其中包含:

[client]
host=127.0.0.1
port=3306
database=google
user=root
password=root

你只需要做

$> mysql

连接到该数据库的方法。

以下是需要考虑的一些关键点

  • 在文件中存储密码并不是一个好主意。最糟糕的情况是,请执行chmod 400 .my.cnf。但最好的方法是将密码存储在其他地方。StackOverflow 上的其他帖子提供了很好的答案。
  • 您可以自定义该文件中的数据,并留下其余部分由您处理。例如,删除database行允许您执行mysql another-db-name

正是我所需要的!就像你所暗示的那样,如果你不想硬编码密码,你可以省略它,然后只需运行 mysql -p 来交互式地提示输入密码。 - Tim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接