如何在MySQL中为用户设置默认模式(schema)?

54

在MySQL中,是否有一种方法可以为每个用户设置默认模式?如果是,请问如何操作?其中用户x将默认为方案y,而用户z将默认为方案a。


1
用户xz是MySQL用户还是其他系统(例如您的操作系统)的用户?当使用一种类型的客户端(例如mysql CLI或PHP数据对象)时,您只需要指定默认数据库吗?还是需要为所有客户端指定?您是否需要/想要覆盖客户端连接时指定的任何默认模式?您是否希望禁用在选择了默认模式后更改默认模式? - eggyal
MySQL不支持模式。您是指“数据库”吗? - user330315
1
Oracle MySQL在其工具中将数据库称为模式。因此,微软有模式和数据库,而MySQL只有模式,但我们称其为数据库。 - Robert Louis Murphy
2个回答

90

用户没有默认数据库。但当前会话中有默认数据库。

您可以使用 DATABASE() 函数获取它 -

SELECT DATABASE();

你可以使用USE语句来设置它 -

USE database1;

你应该手动设置它 - USE db_name,或在连接字符串中设置。


那个用户现在每次登录时都会将database1作为他们的默认模式吗?还是每次连接时都必须说USE database1;? - Robert Louis Murphy
1
每次使用 USE database 或连接字符串时,您都应该设置默认数据库。MySQL 在没有默认数据库的情况下创建新会话。 - Devart
能否动态地利用 USE?就像 USE (SELECT schema FROM blahblah WHERE blahblah) 这样。 - hpaknia

19

如果您的用户在本地文件夹(例如Linux)中,您可以在用户主目录下创建一个名为.my.cnf的文件,并在该文件中提供访问服务器的凭据。例如:

[client]
host=localhost
user=yourusername
password=yourpassword or exclude to force entry
database=mygotodb

Mysql将为每个用户帐户打开此文件,读取凭据并打开所选数据库。

我不确定Windows的情况,因为我一段时间前从Windows升级到了整个系统(也就是Linux)。


我相信这两个答案在某种程度上都是正确的。@Gary指出了解决方案,避免我们每次访问数据库时都要设置模式,而Devart则提供了一次性使用它的解决方案。 - FelipeCaparelli

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