如若转载本文,请注明原始出处:http://hi.baidu.com/hexiong/blog/item/e860e5dd9b0d3ae376c6381a.html
(hexiong@baidu or iihero@CSDN)
偶尔碰到有人问使用mysql命令行,老让人输入--default-character-set=gbk之类无聊的选项,让人烦。让人多输入了几个字符,确实有点不对劲。
加上有时候自己有时候DIY,很少在windows上使用安装的版本,总是解压缩,然后放一个my.ini到解压缩目录下边的某一个特殊的位置。这样,mysql命令行,缺省情况下,反而load不到这个配置文件了。
关于my.ini文件的加载顺序,详见:http://hi.baidu.com/hexiong/blog/item/313534a8b7e0dcbdcb130cc5.html
以windows为例,它会这样加载:
C:\WINDOWS\my.cnf C:\WINDOWS\my.ini C:\my.cnf C:\my.ini
至于$installdir\my.ini,嘿, 不是安装版,这个变量估计是读不到了。
上述四个文件,只要前面的某一个文件加载成功,就不再加载后边指定的配置文件了。
所以,要想使mysql命令行直接使用gbk字符集,有下述方法:
1. 命令行:
mysql -u test -p --default-character-set=gbk
2. 命令行:
mysql --defaults-file=<your real my.ini path> -u test -p
注意 --defaults-file永远要放到第一个参数的位置
3. 直接制作一个客户端版本的my.ini,如:
#Uncomment or Add only the keys that you know how works.
#Read the MySQL Manual for instructions
[client]
port = 3306
default_character_set=gbk
把它存到c:\my.ini
这里需要说明的是:
如果你定制的mysql中my.ini文件本来就在上边4个路径里头,直接修改里边[client]下的default_character_set值为gbk好可。否则就可以生成一个专为client使用的my.ini
方法3虽然方便,但因为是全局配置文件,所以有时候不免会相互影响,尤其是一台机器有多个mysql。
这个时候,可以使用命令行:
d:\>mysql -u test -p --default-character-set=latin1
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10 to server version: 5.0.9-beta-nt
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show variables like 'char%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | gbk |
| character_set_results | latin1 |
| character_set_server | gbk |
| character_set_system | utf8 |
| character_sets_dir | d:\mysql-5.0.9-beta-win32\share\charsets/ |
+--------------------------+-------------------------------------------+
7 rows in set (0.00 sec)
--default-character-set=latin1会覆盖全局文件my.ini中[client]的字符集选项值。
当然,如果我们仔细查看源代码,还会发现$INSTALLDIR指的就是环境变量:MYSQL_HOME,呵呵。
如果你指定了MYSQL_HOME,在找不到前边4个文件的时候,它会去查找$MYSQL_HOME/my.cnf或my.ini
相关源码如下:
static const char **init_default_directories(MEM_ROOT *alloc)
{
const char **dirs;
char *env;
int errors= 0;
dirs= (const char **)alloc_root(alloc, DEFAULT_DIRS_SIZE * sizeof(char *));
if (dirs == NULL)
return NULL;
bzero((char *) dirs, DEFAULT_DIRS_SIZE * sizeof(char *));
#ifdef __WIN__
{
char fname_buffer[FN_REFLEN];
if (my_get_system_windows_directory
(fname_buffer, sizeof(fname_buffer)))
errors += add_directory(alloc, fname_buffer, dirs);
if (GetWindowsDirectory
(fname_buffer, sizeof(fname_buffer)))
errors += add_directory(alloc, fname_buffer, dirs);
errors += add_directory
(alloc, "C:/", dirs);
if (my_get_module_parent(fname_buffer, sizeof(fname_buffer)) != NULL)
errors += add_directory(alloc, fname_buffer, dirs);
}
#elif defined(__NETWARE__)
errors += add_directory(alloc, "sys:/etc/", dirs);
#else
errors += add_directory(alloc, "/etc/", dirs);
errors += add_directory(alloc, "/etc/mysql/", dirs);
#if defined(DEFAULT_SYSCONFDIR)
if (DEFAULT_SYSCONFDIR != "")
errors += add_directory(alloc, DEFAULT_SYSCONFDIR, dirs);
#endif /* DEFAULT_SYSCONFDIR */
#endif
if ((env= getenv(STRINGIFY_ARG(DEFAULT_HOME_ENV
))))
errors += add_directory(alloc, env, dirs);
/* Placeholder for --defaults-extra-file=<path> */
errors += add_directory(alloc, "", dirs);
#if !defined(__WIN__) && !defined(__NETWARE__)
errors += add_directory(alloc, "~/", dirs);
#endif
return (errors > 0 ? NULL : dirs);
}
就分析这么多了。
分享到:
相关推荐
我们可以将my.cnf or mysql.ini文件恢复到原始状态,然后重新启动MYSQL。 这两种方法可以帮助我们解决MYSQL忘记密码的问题。但是,我们需要注意的是,在更改MYSQL的密码时,我们需要小心地对待,以免影响数据库的...
2. 修改MySQL配置:你也可以选择在MySQL的配置文件(通常是`my.cnf`或`my.ini`)中,将`socket`参数设置为与PHP配置文件中相同的值,即`/var/mysql/mysql.sock`,然后重启MySQL服务。 在进行这些修改之前,务必确保...
### CentOS 7 下 MySQL 8 安装指南 #### 一、概述 ...安装过程中需要注意的几个重点是:正确解压并移动文件、添加用户和用户组、配置 my.cnf 文件等。希望这篇指南能够帮助您顺利完成 MySQL 8 的安装配置。
* 在 linux 系统中,配置文件 my.cnf 一般在 /etc/mysql/my.cnf 位置。 * 在 windows 系统中,配置文件 my.ini 一般在安装目录下。 * 找到后请在以下三部分里添加如下内容: ``` [client] default-character-set = ...
在Windows系统中,配置文件通常是`my.ini`,而在Linux系统中则是`my.cnf`。以下是在这两个文件中开启慢查询日志的示例配置: ```ini [mysqld] slow-query-log=1 # 开启慢查询日志 slow_query_log_file="/var/log/...
3. **永久设置**:如果你希望这个更改对所有会话都有效,可以在MySQL配置文件(如my.ini或my.cnf)的[mysqld]段下添加上述行,然后重启MySQL服务。 请注意,放宽`log_bin_trust_function_creators`的设置虽然能解决...
本文将详细介绍如何通过修改MySQL配置文件来解决这一问题,并确保数据能够正确显示和存储。 #### 一、理解MySQL字符集设置 在深入探讨解决方案之前,首先需要了解MySQL中的字符集设置。MySQL支持多种字符集,例如`...
想要自救成功,binlog一定要用好。 mysql-binlog是MySQL数据库的二进制日志,用于记录用户对...unix 系统找到 my.cnf文件 下面以windows为例,在[mysqld]进行如下配置: #日志存储路径 log-bin=mysql-bin #日志格式 b
为了确保数据能够成功导入,可以通过修改MySQL配置文件`my.cnf`中的字符集设置来解决问题。具体操作是在`[client]`和`[server]`部分添加如下行: ```ini default-character-set=gbk ``` 重新启动MySQL服务后,再...
一般可以从选项文件(即my.cnf or my.ini,取决于你的系统)中找到路径。如果未包含在选项文件中,当服务器启动时,可以在命令行中以选项的形式给出。启用二进制日志的选项为 –log-bin。要想确定当前的二进制日志文件...
2. **编辑运行配置文件 my.ini**: - 如果安装目录下没有 `my.ini` 文件,可以从 `my-medium.ini` 复制并重命名为 `my.ini`。 - 下面是配置文件中的一些关键设置项: ```ini # Example MySQL config file for ...
#### 二、MySQL配置文件详解 **1. my-huge.conf配置文件** - **位置**:`/etc/my.cnf` - **功能**:MySQL的主要配置文件,用于调整MySQL的各项参数。 - **重要参数**: - `innodb_buffer_pool_size`:InnoDB...
接下来,编辑MySQL的配置文件`my.cnf`。这个文件通常位于`/etc/mysql/my.cnf`路径下。在配置文件的 `[client]`、`[mysql]` 和 `[mysqld]` 部分分别添加以下内容: ```ini [client] default-character-set = utf8mb4...
或者通过编辑配置文件 `/etc/my.cnf` 来持久化设置。 ```ini [mysqld] max_connections = 2000 max_connect_errors = 10 ``` - **优化OS的limits.conf:** - 修改系统对MySQL进程的限制,以满足更高的资源需求...
Startup variable and service section are there for disabled.” 这个错误通常意味着MySQL服务器服务没有正确启动,或者是配置文件(如my.ini或my.cnf)找不到或存在配置错误。 MySQL Administrator是一个图形化...
一般可以从选项文件(即my.cnf or my.ini,取决于你的系统)中找到路径。如果未包含在选项文件中,当服务器启动时,可以在命令行中以选项的形式给出。启用二进制日志的选项为 –log-bin。要想确定当前的二进制日志文件...
- 修改 MySQL 配置文件 `/etc/my.cnf` 来优化性能。 3. **启动 MySQL 服务** - 使用 `systemctl start mysqld` 命令启动 MySQL 服务。 4. **安全初始化** - 运行 `mysql_secure_installation` 脚本来增强安全性。...
4. **修改my.cnf配置文件**:编辑MySQL的配置文件(通常位于/etc/mysql/my.cnf),添加或修改如下内容: ```ini [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld]...
首先,你需要找到MySQL的配置文件`my.ini`(在某些系统中可能是`my.cnf`)。如果你只找到`my_default.ini`,将其重命名为`my.ini`。然后,在`[mysqld]`配置段下添加`skip-grant-tables`,这将使MySQL在启动时跳过...
解决上述问题的方法是在MySQL配置文件(通常为`my.cnf`)的`[mysqld]`段落下添加`skip-name-resolve`,如下所示: ```ini [mysqld] skip-name-resolve ``` 保存配置文件后,需要重启MySQL服务以应用更改。执行`...