gdufo

           

          關于Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)的問題

          找不到mysql socket的問題,我最近碰到了好多次
          重裝系統以前,我的mysql,apache,php都是自己編譯安裝的,當時并沒有碰到這些問題,
          重裝系統以后,我的mysql是通過yum安裝的,apache1.37和php5.2是自己編譯安裝的,出現了這個問題

          首先是mysqld啟動不了,
          我通過vim /etc/my.cnf,修改了[mysqld]選項下面的socket的值
          socket=/var/lib/mysql/mysql.sock

          ok,mysqld可以啟動了

          接下來,是mysql啟動不了,同樣,vim /etc/my.cnf,添加了如下腳本:
          [mysql]
          socket
          =/var/lib/mysql/mysql.sock

          然后,mysqladmin啟動不了,還是一樣,在[mysqladmin]下面socket值設置為同樣的路徑
          ok,可以啟動了

          最后,用php連接的時候,又出現這個問題了
          Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
          我首先想到的是,在/etc/php.ini修改mysql.default_socket的值,在這個文件中,關于mysql.default_socket的值的說明是這樣的,
          ; Default socket name for local MySQL connects.  If empty, uses the built-in MySQL defaults.
          這個值一開始是空的,也就是說,如果我們不主動去修改的話,php將會使用內建在mysql中的默認值
          于是,我修改了這個值,設置為:
          mysql.default_socket=/var/lib/mysql/mysql.sock
          然后我重新啟動apache,結果無效;reboot系統,結果無效
          我火大了,php就非得去連接/tmp/mysql.sock,可是我的系統里面就是沒有這個路徑下的這個文件,那我就給你鏈接一個,于是我做了下面的操作,
          ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

          重新打開我的php頁面,ok,這下能連接到數據庫了。

          就這樣,我把這個問題解決了,可是我還是有點迷糊,為什么一定要去找/tmp/mysql.sock這個文件,是不是一開始我就給它ln一個鏈接就可以解決?這個mysql.sock到底是用來做什么的?于是我就產生了看看這個文件內容的想法,

          cat /var/lib/mysql/mysql.sock
          提示我,cat: /var/lib/mysql/mysql.sock: 沒有那個設備或地址

          less /var/lib/mysql/mysql.sock
          /var/lib/mysql/mysql.sock is not a regular file (use -f to see it)
          我強行查看!
          less -f /var/lib/mysql/mysql.sock
          /var/lib/mysql/mysql.sock: 沒有那個設備或地址
          ~~
          vim /var/lib/mysql/mysql.sock
          提示權限不足,我是root用戶耶,還提示權限不足,奇怪了
          ~~~~
          ll /var/lib/mysql/mysql.sock
          看到的屬性是:
          srwxrwxrwx 1 mysql mysql 0 11-21 14:39 /var/lib/mysql/mysql.sock
          這 個屬性引起了我的注意,檔案類型標志是s,還真沒去了解過這樣的類型,到鳥哥的私房菜去找了一下,原來,這個是資料接口檔,用我們大陸說的習慣應該是套接 字文件(sockets),這種文件一般用在網絡上的資料套接,mysqld守護進程生成了這個文件,其他與mysql相關的程序想使用mysql,估計 就是通過這個文件了。
          這種特殊文件即使是最高權限的root用戶,也是不能查看不能編輯的,有點像檔案標志是p的管道文件。

          posted on 2009-08-21 08:06 gdufo 閱讀(191) 評論(0)  編輯  收藏 所屬分類: Database (oracle, sqlser,MYSQL)

          導航

          統計

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          Hibernate

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 项城市| 通山县| 清丰县| 友谊县| 澳门| 右玉县| 金乡县| 南宫市| 从江县| 淮北市| 安宁市| 红河县| 讷河市| 邹平县| 安顺市| 鲁甸县| 昌宁县| 保山市| 蓝山县| 仁怀市| 霞浦县| 正蓝旗| 海原县| 南漳县| 浦江县| 台山市| 铜梁县| 定陶县| 涟水县| 兴海县| 会昌县| 兴隆县| 堆龙德庆县| 齐齐哈尔市| 视频| 南昌市| 军事| 安达市| 桃江县| 紫阳县| 墨玉县|