mysql数据库时间不准确_主数据库(mysql)的时间不对
今天早上領(lǐng)導(dǎo)通知我講主數(shù)據(jù)庫(kù)的時(shí)間不對(duì),Linux的系統(tǒng)時(shí)間是對(duì)的。怎么回事???難道是我以前更改了系統(tǒng)時(shí)間造成??怎么解決呢? 在mysql手冊(cè)中有下面這段話: 5.10.8. MySQL服務(wù)器時(shí)區(qū)支持 MySQL服務(wù)器有幾個(gè)時(shí)區(qū)設(shè)置: · 系統(tǒng)時(shí)區(qū)。服務(wù)器啟動(dòng)時(shí)便試圖確定主機(jī)的時(shí)區(qū),用它來(lái)設(shè)置system_time_zone系統(tǒng)變量。 · 服務(wù)器當(dāng)前的時(shí)區(qū)。全局系統(tǒng)變量time_zone表示服務(wù)器當(dāng)前使用的時(shí)區(qū)。初使值為'SYSTEM',說(shuō)明服務(wù)器時(shí)區(qū)與系統(tǒng)時(shí)區(qū)相同。可以用--default-time-zone=timezone選項(xiàng)顯式指定初使值。如果你有SUPER 權(quán)限,可以用下面的語(yǔ)句在運(yùn)行時(shí)設(shè)置全局變量值: · mysql> SET GLOBAL time_zone = timezone; · 每個(gè)連接的時(shí)區(qū)。每個(gè)客戶端連接有自己的時(shí)區(qū)設(shè)置,用會(huì)話time_zone變量給出。其初使值與全局變量time_zone相同,但可以用下面的語(yǔ)句重設(shè): · mysql> SET time_zone = timezone; 可以用下面的方法查詢當(dāng)前的全局變量值和每個(gè)連接的時(shí)區(qū): mysql> SELECT @@global.time_zone, @@session.time_zone; timezone 值為字符串,表示UTC的偏移量,例如'+10:00'或'-6:00'。如果已經(jīng)創(chuàng)建并裝入mysql數(shù)據(jù)庫(kù)中的時(shí)區(qū)相關(guān)表,你還可以使用命名的時(shí)區(qū),例如'Europe/Helsinki'、'US/Eastern'或'MET'。值'SYSTEM'說(shuō)明該時(shí)區(qū)應(yīng)與系統(tǒng)時(shí)區(qū)相同。時(shí)區(qū)名對(duì)大小寫不敏感。 MySQL安裝程序在mysql數(shù)據(jù)庫(kù)中創(chuàng)建時(shí)區(qū)表,但不裝載。你必須手動(dòng)裝載。(如果你正從以前的版本升級(jí)到MySQL 4.1.3或更新版本,你應(yīng)通過(guò)升級(jí)mysql數(shù)據(jù)庫(kù)來(lái)創(chuàng)建表。參見(jiàn)2.10.2節(jié),“升級(jí)授權(quán)表”中的說(shuō)明)。 如果你的系統(tǒng)有自己的時(shí)區(qū)信息數(shù)據(jù)庫(kù)(描述時(shí)區(qū)的一系列文件),應(yīng)使用mysql_tzinfo_to_sql程序來(lái)填充時(shí)區(qū)表。示例系統(tǒng)如 Linux、FreeBSD、Sun Solaris和Mac OS X。這些文件的可能位置為/usr/share/zoneinfo目錄。如果你的系統(tǒng)沒(méi)有時(shí)區(qū)信息數(shù)據(jù)庫(kù),可以使用本節(jié)后面描述的下載的軟件包。 mysql_tzinfo_to_sql程序用來(lái)裝載時(shí)區(qū)表。在命令行中,將時(shí)區(qū)信息目錄路徑名傳遞到mysql_tzinfo_to_sql并輸出發(fā)送到mysql程序。例如: shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql mysql_tzinfo_to_sql讀取系統(tǒng)時(shí)區(qū)文件并生成SQL語(yǔ)句。mysql處理這些語(yǔ)句并裝載時(shí)區(qū)表。 mysql_tzinfo_to_sql還可以用來(lái)裝載單個(gè)時(shí)區(qū)文件,并生成閏秒信息。 要想裝載對(duì)應(yīng)時(shí)區(qū)tz_name的單個(gè)時(shí)區(qū)文件tz_file,應(yīng)這樣調(diào)用mysql_tzinfo_to_sql: shell> mysql_tzinfo_to_sql tz_file tz_name | mysql -u root mysql 如果你的時(shí)區(qū)需要計(jì)算閏秒,按下面方法初使化閏秒信息,其中tz_file是時(shí)區(qū)文件名: shell> mysql_tzinfo_to_sql --leap tz_file | mysql -u root mysql 如果你的系統(tǒng)沒(méi)有時(shí)區(qū)信息數(shù)據(jù)庫(kù) (例如,Windows或HP-UX),你可以從 http://dev.mysql.com/downloads/timezones.html下載預(yù)構(gòu)建時(shí)區(qū)表軟件包。該軟件包包含MyISAM時(shí)區(qū)表所用的.frm、.MYD和.MYI文件。這些表應(yīng)屬于mysql數(shù)據(jù)庫(kù),因此應(yīng)將這些文件放到MySQL服務(wù)器數(shù)據(jù)目錄的mysql子目錄。操作時(shí)應(yīng)關(guān)閉服務(wù)器。 警告!如果你的系統(tǒng)有時(shí)區(qū)信息數(shù)據(jù)庫(kù),請(qǐng)不要使用下載的軟件包。而應(yīng)使用mysql_tzinfo_to_sql實(shí)用工具!否則,MySQL和系統(tǒng)上其它應(yīng)用程序處理日期時(shí)間的方法會(huì)有所不同。 上面是mysql手冊(cè)中的內(nèi)容,以下是我解決辦法: 方法一 1。在mysql的命令模式下使用 mysql > select CURTIME(); 或 mysql > select now(); 看當(dāng)前時(shí)間是否正確,可以看到mysql當(dāng)前使用的是那一個(gè)時(shí)區(qū)的時(shí)間。 2。在mysql命令行中更改時(shí)區(qū) mysql > SET time_zone = '+8:00'; # 此為北京時(shí),我們所在東8區(qū) mysql> flush privileges; # 立即生效 此時(shí)mysql時(shí)區(qū)已更改正確,與系統(tǒng)時(shí)區(qū)都使用為 Shanghai時(shí)間了。 #### 這種方法好像只能在終端上使用,退出終端后時(shí)間又會(huì)變成原來(lái)的,看來(lái)只能重啟mysql了。 3。重啟mysql也應(yīng)沒(méi)有問(wèn)題,此時(shí)mysql會(huì)主動(dòng)讀取系統(tǒng)時(shí)間。 方法二: 如果mysql數(shù)據(jù)庫(kù)可以重啟,直接重啟,mysql應(yīng)可以立即主動(dòng)讀取系統(tǒng)時(shí)間,如果不行則更改mysql的配置文件(mysql.cnf) 在my.cnf的 [mysqld]區(qū)域中加上 default-time_zone = '+8:00' #此為北京時(shí)。
總結(jié)
以上是生活随笔為你收集整理的mysql数据库时间不准确_主数据库(mysql)的时间不对的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Ubuntu查看和设置环境变量
- 下一篇: linux cmake编译源码,linu