以更改為UTF-8為例,GB2312雷同。 1、關(guān)閉mysql服務(wù)(以下為命令行中執(zhí)行) view plaincopy service mysql stop 2、修改 /etc/mysql/my.cnf (默認(rèn)的安裝路徑) view plaincopy vim /etc/mysql/my.cnf 打開my.cnf后,在文件內(nèi)的[mysqld]下增加如...
伍家崗ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
1) 最簡單的修改方法,就是修改mysql的my.ini文件中的字符集鍵值,
如 default-character-set = utf8
character_set_server = utf8
修改完后,重啟mysql的服務(wù),service mysql restart
(2) 還有一種修改mysql默認(rèn)字符集的方法,就是使用mysql的命令
SET?NAMES?'utf8';
如果用戶想改變表的默認(rèn)字符集和所有的字符列的字符集到一個(gè)新的字符集,使用下面的語句:
ALTER
TABLE
tbl_name
CONVERT
TO
CHARACTER
SET
charset_name;警告:上述操作是在字符集中轉(zhuǎn)換列值。如果用戶在字符集(如
gb2312)中有一個(gè)列,但存儲的值使用的是其它的一些不兼容的字符集(如
utf8),那么該操作將不會得到用戶期望的結(jié)果。在這種情況下,用戶必須對每一列做如下操作:
ALTER
TABLE
t1
CHANGE
c1
c1
BLOB;
ALTER
TABLE
t1
CHANGE
c1
c1
TEXT
CHARACTER
SET
utf8;
這樣做的原因是:從
BLOB
列轉(zhuǎn)換或轉(zhuǎn)換到
BLOB
列沒有轉(zhuǎn)換發(fā)生。
如果用戶指定以二進(jìn)制進(jìn)行
CONVERT
TO
CHARACTER
SET,則
CHAR、VARCHAR
和
TEXT
列將轉(zhuǎn)換為它們對應(yīng)的二進(jìn)制字符串類型(BINARY,VARBINARY,BLOB)。這意味著這些列將不再有字符集,隨后的
CONVERT
TO
操作也將不會作用到它們上。
如果僅僅改變一個(gè)表的缺省字符集,可使用下面的語句:
ALTER
TABLE
tbl_name
DEFAULT
CHARACTER
SET
charset_name;
DEFAULT是可選的。當(dāng)向一個(gè)表里添加一個(gè)新的列時(shí),如果沒有指定字符集,則就采用缺省的字符集(例如當(dāng)ALTER
TABLE
...
ADD
column)。
ALTER
TABLE
...
DEFAULT
CHARACTER
SET
和
ALTER
TABLE
...
CHARACTER
SET
是等價(jià)的,修改的僅僅是缺省的表字符集。
mysql如何更改數(shù)據(jù)庫字符編碼?借助客戶端工具很容易就可以更改了,下面來看一下。
打開navicat客戶端工具,在左邊找到要更改的數(shù)據(jù)庫。
右鍵點(diǎn)擊這個(gè)數(shù)據(jù)庫,在菜單上點(diǎn)擊數(shù)據(jù)庫屬性選項(xiàng)。
在彈出的屬性窗口上,點(diǎn)擊默認(rèn)字符集下的下拉框。
在彈出的下拉選項(xiàng)里,點(diǎn)擊選中要使用的字符集就行了,比如選擇常用的utf8字符集,點(diǎn)擊ok按鈕就行了。
可直接進(jìn)入 mysql 進(jìn)行更改,具體如下:
1.查找/etc目錄下是否有my.cnf文件;
#ls -l | grep my.cnf (在/etc下查找是否有my.cnf文件存在)
2.如果沒有就要從/usr/share/mysql,拷貝一個(gè)到/etc 下,在/usr/share/mysql目錄下有五個(gè)后綴為.cnf的文件,分別是 my-huge.cnf my-innodb-heavy-4G.cnf my-large.cnf my-medium.cnf my-small.cnf ;從中隨便拷貝一個(gè)到/etc目錄下并將其改為my.cnf文件,我選擇的是my-medium.cnf :
#cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
3.修改my.cnf文件,在該文件中的三個(gè)地方加上 default-character-set=utf8([client] [mysqld] [mysql])
#vi /etc/my.cnf
修改如下:(紅色為添加部分)
[client]
#password = your_password
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
default-character-set=utf8
init_connect='SET NAMES utf8' //此行可不加
[mysql]
no-auto-rehash
default-character-set=utf8
保存退出;
4.重起MySQL服務(wù)器,使其設(shè)置的內(nèi)容生效
#/etc/init.d/mysql restart
5. 重新登入mysql;
# mysql -u root - p
#(輸入密碼)
mysql show variables like 'character_set%' ;
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |(都生成了utf8,成功了 哈哈哈)
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
mysql啟動和停止 操作 :
可以通過 #/etc/init.d/mysql [start | stop | restart](實(shí)現(xiàn)啟動,停止,重啟)
也可以通過 #service mysql [start | stop | restart](實(shí)現(xiàn)啟動,停止,重啟)
*********************************
另外:如果在修改字符集前,嘗試在數(shù)據(jù)庫中插入中文,那么當(dāng)修改了字符集后,在你所插入中文的數(shù)據(jù)庫中(在別的數(shù)據(jù)庫中可能沒問題),
通過show variables like 'character_set%'查詢的結(jié)果可如下:
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
1.在[mysqld]下添加
default-character-set=utf8(mysql 5.5 版本添加character-set-server=utf8)
2.在[client]下添加
default-character-set=utf8
這樣我們建數(shù)據(jù)庫建表的時(shí)候就不用特別指定utf8的字符集了。配置文件里的這種寫法解決了數(shù)據(jù)存儲和比較的問題
,但是對客戶端的連接是沒有作用的,客戶端這時(shí)候一般需要指定utf8方式連接才能避免亂碼。也就是傳說總的set
names命令。事實(shí)上,set names utf8命令對應(yīng)的是服務(wù)器端以下幾個(gè)命令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = xutf8;
但這三個(gè)參數(shù)是不能寫在配置文件my.cnf里的。只能通過set命令來動態(tài)修改。我們需要的是在配置文件里寫好一勞
永逸的辦法。那么這時(shí)候,是否有在服務(wù)端解決問題的辦法呢,可行的思路是在init_connect里設(shè)置。這個(gè)命令在每
個(gè)普通用戶連接上來的時(shí)候都會觸發(fā)執(zhí)行,可以在[mysqld]部分增加以下一行設(shè)置連接字符集:
在[mysqld]下添加:
init_connect = 'SET NAMES utf8'