redhat linux下配置JSP+mysql網站記錄

          近期在redhat linux服務器下配置一個JSP網站,由於是第一次在linux上佈署網站,遇到諸多問題,還好過五關斬六將,網站終於成功運行。遇到的一些問題和相關的解決方法記錄如下。

         1:mysql的配置文件問題。

          服務器上的mysql版本爲5.5.13,配置文件在/usr/share/mysql下,用find.*cnf查看該目錄下的配置文件可發現有5個.cnf文件,可根據自己機器的需求選擇其中一個配置文件 複製到/etc/下(如果/etc/目錄下沒的my.cnf文件),並重命名爲my.cnf,如果服務器的機器內存大於1G,可以複製my-huge.cnf文件,命令爲"cp /usr/share/mysql/my-huge.cnf  /etc/my.cnf"。這樣就配置好了mysql的配置文件,如果不這樣做,那麼修改msyql的一些配置將無法起作用。

         2:網站中的中文亂碼問題。

         這個問題糾結了好久,中文亂碼與jsp頁面,數據庫的編碼等都存在聯繫。在JSP頁面中設置字符編碼 gb2312,在tomcat服務器的server.xml配置文件中,在<Connctor  />元素的最後加上URIEncoding="GBK"。最關鍵點在於mysql數據的字符編碼問題。在安裝mysql時默認的字符編碼爲 lation1,登錄到mysql時可以用如下命令查看數據庫的字符編碼:show variables like '%character%';

        mysql對字符編碼細分到4 個層次,分別 爲服務器,數據庫,表,連接,爲了完整的解決中文亂碼問題,可以將這4個字符編碼都設置爲gbk,方法是修改mysql的配置文件.

打開/etc/my.cnf文件,在[client]下加上default_character_set=gbk;在[mysqld]下加上default_character_set=gbk;在[mysqld]下加入character_set_server=gbk;(這裏有一個問題,原先在[mysqld]下加入的是default-character-set=gbk,結果在重啓mysql時出現Starting MySQL............The server quit without updating PID file (/var/lib/mysql/XXX.pid). [失敗]錯誤,這時可以到查看/var/lib/mysql/XXX.errory文件,可以發現[ERROR] /usr/sbin/mysqld: unknown variable 'default-character-set=utf8',應該是這個版 的mysqld不支持這個名稱)。

        更改配置文件後中,重啓msyql,再查看字符編碼,應該都已經設置爲了gbk,此時中文亂碼問題應該已經解決。進一步可設置所使用的數據庫的編碼,可用命令"show create database 數據庫名查看創建數據庫時的編碼,如果爲latin1 可用以下命令"alter database 數據庫名 character set gbk"修改字符集爲gbk;可以用命令"show create table 表名查看相關表的字符編碼設置,如爲 latin1,可用以下命令"alter table 表名 character set GBK"修改編碼;最後是修改表中相關字符的字符編碼問題,如:“alter table  表名  modify 字段名 字段類型 character set gbk;”,如果表中已經有數據,可能修改失敗,這時可先刪除表中數據:truncate table 表名;再進行修改操作。

        經過一系列修改後,就應該不存在中文亂碼問題了。

         3:mysql的登錄問題。( rpm安裝mysql方式下)

        如果root密碼忘記了或不小心更改(因不小心操作),可用如下方法進行修復:在/etc/init.d/mysql文件283(大概) 行$binddir/mysqld_safe 後緊跟着加上 --skip-grant-tables ,再重啓msyql,可以直接登錄msyql,這時可以做root密碼修改操作。完成操作後刪除/etc/my.cnf中新加入的語句。

         4:通過網業訪問mysql數據庫時,出現'Access denied ....................................(password no)問題,出現此問題的原因是myql用戶訪問 的權限問題。爲了安全考慮,默認情況下msyql只能進行本機登錄,不能遠程接入。表Mysql.user記錄了不同用戶不同主機不同的權限。可通過命令查看:Select * from mysql.user ;可以增加一個新用戶如shuxia,host指定爲%,表示任意主機,接着給shuxia@'%' 用戶分配所有的權限Flush privileges Grant all privileges on *.* to shuxia@’%’ identified by ‘密碼’;刷新權限列表:flush privileges。

        至此,一些關鍵問題都經解決(當然對於新手而言),還有些小問題這裏沒有記錄,待以後補上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章