`
iihero
  • 浏览: 257712 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

再谈mysql的配置文件my.ini or my.cnf (之一)

阅读更多

如若转载本文,请注明原始出处: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);
}

就分析这么多了。

分享到:
评论

相关推荐

    MYSQL忘记密码解决方法

    我们可以将my.cnf or mysql.ini文件恢复到原始状态,然后重新启动MYSQL。 这两种方法可以帮助我们解决MYSQL忘记密码的问题。但是,我们需要注意的是,在更改MYSQL的密码时,我们需要小心地对待,以免影响数据库的...

    Mac os 解决无法使用localhost连接mysql问题

    2. 修改MySQL配置:你也可以选择在MySQL的配置文件(通常是`my.cnf`或`my.ini`)中,将`socket`参数设置为与PHP配置文件中相同的值,即`/var/mysql/mysql.sock`,然后重启MySQL服务。 在进行这些修改之前,务必确保...

    #CentOS7下安装mysql8.txt

    ### CentOS 7 下 MySQL 8 安装指南 #### 一、概述 ...安装过程中需要注意的几个重点是:正确解压并移动文件、添加用户和用户组、配置 my.cnf 文件等。希望这篇指南能够帮助您顺利完成 MySQL 8 的安装配置。

    更改MySQL数据库的编码为utf8mb4_wo.pdf

    * 在 linux 系统中,配置文件 my.cnf 一般在 /etc/mysql/my.cnf 位置。 * 在 windows 系统中,配置文件 my.ini 一般在安装目录下。 * 找到后请在以下三部分里添加如下内容: ``` [client] default-character-set = ...

    MySQL慢查询日志.docx

    在Windows系统中,配置文件通常是`my.ini`,而在Linux系统中则是`my.cnf`。以下是在这两个文件中开启慢查询日志的示例配置: ```ini [mysqld] slow-query-log=1 # 开启慢查询日志 slow_query_log_file="/var/log/...

    创建函数或导入文件时出现的错误.docx

    3. **永久设置**:如果你希望这个更改对所有会话都有效,可以在MySQL配置文件(如my.ini或my.cnf)的[mysqld]段下添加上述行,然后重启MySQL服务。 请注意,放宽`log_bin_trust_function_creators`的设置虽然能解决...

    修改MySQl乱码的问题

    本文将详细介绍如何通过修改MySQL配置文件来解决这一问题,并确保数据能够正确显示和存储。 #### 一、理解MySQL字符集设置 在深入探讨解决方案之前,首先需要了解MySQL中的字符集设置。MySQL支持多种字符集,例如`...

    自救措施:MySQL删库or删表or误删数据

    想要自救成功,binlog一定要用好。 mysql-binlog是MySQL数据库的二进制日志,用于记录用户对...unix 系统找到 my.cnf文件 下面以windows为例,在[mysqld]进行如下配置: #日志存储路径 log-bin=mysql-bin #日志格式 b

    MySQL 线上运维常见错误、疑难问题录

    为了确保数据能够成功导入,可以通过修改MySQL配置文件`my.cnf`中的字符集设置来解决问题。具体操作是在`[client]`和`[server]`部分添加如下行: ```ini default-character-set=gbk ``` 重新启动MySQL服务后,再...

    自动恢复MySQL数据库的日志文件思路分享及解决方案

    一般可以从选项文件(即my.cnf or my.ini,取决于你的系统)中找到路径。如果未包含在选项文件中,当服务器启动时,可以在命令行中以选项的形式给出。启用二进制日志的选项为 –log-bin。要想确定当前的二进制日志文件...

    mysql 安装配置

    2. **编辑运行配置文件 my.ini**: - 如果安装目录下没有 `my.ini` 文件,可以从 `my-medium.ini` 复制并重命名为 `my.ini`。 - 下面是配置文件中的一些关键设置项: ```ini # Example MySQL config file for ...

    mysql之Linux安装,重点是索引的优化笔记

    #### 二、MySQL配置文件详解 **1. my-huge.conf配置文件** - **位置**:`/etc/my.cnf` - **功能**:MySQL的主要配置文件,用于调整MySQL的各项参数。 - **重要参数**: - `innodb_buffer_pool_size`:InnoDB...

    如何更改MySQL数据库的编码为utf8mb4

    接下来,编辑MySQL的配置文件`my.cnf`。这个文件通常位于`/etc/mysql/my.cnf`路径下。在配置文件的 `[client]`、`[mysql]` 和 `[mysqld]` 部分分别添加以下内容: ```ini [client] default-character-set = utf8mb4...

    mysql-ha-双主安装

    或者通过编辑配置文件 `/etc/my.cnf` 来持久化设置。 ```ini [mysqld] max_connections = 2000 max_connect_errors = 10 ``` - **优化OS的limits.conf:** - 修改系统对MySQL进程的限制,以满足更高的资源需求...

    MySQL Administrator 登录报错的解决方法

    Startup variable and service section are there for disabled.” 这个错误通常意味着MySQL服务器服务没有正确启动,或者是配置文件(如my.ini或my.cnf)找不到或存在配置错误。 MySQL Administrator是一个图形化...

    教你自动恢复MySQL数据库的日志文件(binlog)

    一般可以从选项文件(即my.cnf or my.ini,取决于你的系统)中找到路径。如果未包含在选项文件中,当服务器启动时,可以在命令行中以选项的形式给出。启用二进制日志的选项为 –log-bin。要想确定当前的二进制日志文件...

    Linux+Nginx+Mysql+Php安装教程

    - 修改 MySQL 配置文件 `/etc/my.cnf` 来优化性能。 3. **启动 MySQL 服务** - 使用 `systemctl start mysqld` 命令启动 MySQL 服务。 4. **安全初始化** - 运行 `mysql_secure_installation` 脚本来增强安全性。...

    MySQL保存emoji表情

    4. **修改my.cnf配置文件**:编辑MySQL的配置文件(通常位于/etc/mysql/my.cnf),添加或修改如下内容: ```ini [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld]...

    新装MySql后登录出现root帐号提示mysql ERROR 1045 (28000): Access denied for use的解决办法

    首先,你需要找到MySQL的配置文件`my.ini`(在某些系统中可能是`my.cnf`)。如果你只找到`my_default.ini`,将其重命名为`my.ini`。然后,在`[mysqld]`配置段下添加`skip-grant-tables`,这将使MySQL在启动时跳过...

    mysql could not be resolved: Name or service not known

    解决上述问题的方法是在MySQL配置文件(通常为`my.cnf`)的`[mysqld]`段落下添加`skip-name-resolve`,如下所示: ```ini [mysqld] skip-name-resolve ``` 保存配置文件后,需要重启MySQL服务以应用更改。执行`...

Global site tag (gtag.js) - Google Analytics