如若转载本文,请注明原始出处: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 ini 初始化配置文件 配置环境:Windows Server 2008 R2 4核八线程 16G 具体可残酷配置说明及优化建议修改
mysql配置文件my.cnf,经常由于mysql升级后,默认没有此配置文件,上传以备份,根据个人需求,手动修改改文件,放置于/etc/my.cnf处,重启mysql生效
mysql5.7用的配置文件,完成了基本的调优选项,并注释了需要自行调整参数的计算公式,使用时请自行重命名为my.cnf。如配合我上传的自动安装脚步mysql7install.sh一起使用则无需重命名,配置在对应的http服务上使用...
某电商网站的生产环境的Mysql配置文件,放入/etc/下面即可
MySQL 5.6、5.7、8.0版本的my.cnf完整配置文件,亲测可用,配置文件中优化了MySQL中的一些默认配置项,能够有效的提高MySQL数据库的并发处理能力!
MySQL配置文件my.cnf中文版.doc
linux下mysql配置文件my.cnf详解.pdf linux下mysql配置文件my.cnf详解.zip dba基础
linux下mysql配置文件my.cnf详解
MySQL 教程 MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库 MySQL8.0数据库的一般配置 Linux环境的配置文件
此配置是老男孩生产线上使用的配置,这配置已经优化的不错了,如果你的mysql没有什么特殊情况的话,可以直接使用该配置参数 对各参数添加了中文说明 ======= back_log = 600 #在MYSQL暂时停止响应新请求之前,短...
mysql 配置文件my.cnf模板。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
本文主要给大家介绍了关于MySQL中配置文件my.cnf因权限问题导致无法启动的相关解决过程,分享出来供大家参考学习,下面来一起看看详细的介绍: 问题描述 MySQL 无法启动,报如下错误: 问题分析 查看 MySQL 错误...
主要介绍了mysql服务性能优化—my.cnf_my.ini配置说明详解(16G内存),需要的朋友可以参考下
mysql5.7优化后的配置文件,mysql5.7主从架构配置环境,生产环境直接使用,推荐生产环境5.7版本使用最稳定版本5.7.21。
官方mysql的docker镜像,自定义配置文件启动,附件中是自定义的配置文件,里面配置了端口和各种其他参数,便于维护
mysql数据库my.cnf配置文件注释详解
一、my.ini配置文件的路径:面向已经安装好mysql的用户 找到mysql的环境变量配置路径: 图中,我的配置路径就是:E:\Software\mysql-8.0.19-winx64,有的是在Mysql的bin目录下,这都没有关系,无关大局。 前往对应...
mysql-5.7.24的my.cnf。适用于生产环境。相关配置已经写好,直接可以用。 mysql-5.7.24的my.cnf。适用于生产环境。相关配置已经写好,直接可以用。 mysql-5.7.24的my.cnf。适用于生产环境。相关配置已经写好,直接...
ubuntu mysql my.cnf 服务器最佳配置(16G,32G 内存)