mysql数据库系统配置文件_MySQL数据库(6)----配置文件 my.cnf 的使用
1. 使用源碼安裝好MySQL后,其配置文件一般位于 /usr/local/my.cnf,可以使用如下命令查看查看配置文件的搜索順序:
root@javis:~$ mysqld --help --verbose | grep -B1 -i "my.cnf"
2016-07-26 20:12:24 0 [Note] mysqld (mysqld 5.6.31) starting as process 5732...2016-07-26 20:12:24 5732 [Note] Plugin 'FEDERATED'is disabled.
Default options are read from the following filesin the given order:
/etc/mysql/my.cnf /etc/my.cnf /usr/local/mysql/my.cnf ~/.my.cnf--
-P, --port=# Port number to use for connection or 0to default to,
my.cnf, $MYSQL_TCP_PORT,/etc/services, built-indefault2016-07-26 20:12:25 5732[Note] Binlog end2016-07-26 20:12:25 5732 [Note] Shutting down plugin 'MyISAM'
2016-07-26 20:12:25 5732 [Note] Shutting down plugin 'CSV'
可以看到,紅色標(biāo)記的那一段話顯示搜索 my.cnf 的順序?yàn)?/etc/mysql/my.cnf、/etc/my.cnf、/usr/local/mysql/my.cnf、~/.my.cnf。
使用 'ls /etc/mysql' 命令查看到本機(jī)沒有 /etc/mysql 目錄。為了加快搜索速度,將 my.cnf 文件從 /usr/local/mysql/my.cnf 移動到 /etc/my.cnf
mv /usr/local/mysql/my.cnf /etc/my.cnf
2. 配置 my.cnf ,是MySQL默認(rèn)使用小寫的名字來對數(shù)據(jù)庫和表進(jìn)行命名。
UNIX/Linux系統(tǒng)上的MySQL會區(qū)分?jǐn)?shù)據(jù)庫和表名字的大小寫。解決此問題的一種辦法是,固定使用一種大小寫形式的名字。另一種辦法是,在啟動服務(wù)器時(shí),將 lower_case_table_names 系統(tǒng)變量設(shè)置為1,這個(gè)設(shè)置有下面兩個(gè)效果:
(i)在為某個(gè)表創(chuàng)建相應(yīng)的磁盤文件之前,服務(wù)器會先把該表的名字轉(zhuǎn)換為小寫。
(ii)在語句里引用這個(gè)表時(shí),服務(wù)器會在試圖到磁盤上查找這個(gè)表之前,把它的名字轉(zhuǎn)換為小寫。
這種做法的結(jié)果是,不管文件系統(tǒng)是否區(qū)分大小寫,所有名字都不會區(qū)分大小寫。如此一來,在系統(tǒng)間移動數(shù)據(jù)庫和表會變得容易。不過,這里提醒一下,如果打算使用這種策略,則必須在開始創(chuàng)建數(shù)據(jù)庫或表之前(而不是之后)通過服務(wù)器配置,將 lower_case_table_names 系統(tǒng)變量設(shè)置為1。如果在設(shè)置此變量之前,已經(jīng)創(chuàng)建了數(shù)據(jù)庫或表,而且其名字里包含大寫字母,那么這個(gè)設(shè)置將無法產(chǎn)生預(yù)期的效果,因?yàn)榇疟P里已經(jīng)存儲了某些不全為小寫字母的名字。為避免出現(xiàn)這個(gè)問題,可以先把名字里有大寫字母的表全部重新命名為小寫字母形式,然后再來設(shè)置 lower_case_table_names 系統(tǒng)變量。(可以用 ALTER TABLE 或 RENAME TABLE 語句來重新命名表。)如果有很多表需要重新命名,或者有許多數(shù)據(jù)庫的名字包含大小寫字母,那么更簡單的辦法是選轉(zhuǎn)儲這些數(shù)據(jù)庫,然后在設(shè)置了 lower_case_table_names 系統(tǒng)變量之后,再重新創(chuàng)建它們。步驟如下:
(1)用 mysqldump 工具將各個(gè)數(shù)據(jù)庫轉(zhuǎn)儲出來:
% mysqldump --database -p -uroot db_name > db_name.sql
(2)用 DROP DATABASE 語句刪除這些數(shù)據(jù)庫。
(3)關(guān)閉服務(wù)器,配置 my.cnf 文件,添加 'lower_case_table_names=1' 語句,然后重啟 mysqld 服務(wù)器。
(4)用mysql 程序重新加載所有的轉(zhuǎn)儲文件:
% msyql -p -uroot < db_name.sql
由于設(shè)置了 lower_case_table_names,所有的數(shù)據(jù)庫和表在重新創(chuàng)建之后在磁盤里的名字將全部為小寫。
示例如下:
mysql> CREATE TABLE MyTABle (Name varchar(1), id int not null auto_increment , primary key (id) );
Query OK, 0 rows affected (0.29 sec)
mysql> show tables;
+------------------+
| Tables_in_sampdb |
+------------------+
| absence |
| grade_event |
| member |
| mytable |
| president |
| score |
| student |
+------------------+
7 rows in set (0.00 sec)
mysql> desc mytable;
+-------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+----------------+
| Name | varchar(1) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | auto_increment |
+-------+------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)
由上可見,使用 CREATE TABLE 命令創(chuàng)建了 MyTABle 表,但MySQL按照默認(rèn)的 lower_case_table_names 設(shè)置,將表名存儲為 'mytable'。并且由 'desc mytable' 命令可以看出,lower_case_table_names 并沒有影響到 column_name,因?yàn)?mytable 表的Name列的列名依然為Name。
總結(jié)
以上是生活随笔為你收集整理的mysql数据库系统配置文件_MySQL数据库(6)----配置文件 my.cnf 的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql可以存储标点么_MySQL命名
- 下一篇: python 批量创建变量_Python