導航:首頁 > 使用方法 > mysql常用方法

mysql常用方法

發布時間:2022-01-27 02:55:22

Ⅰ linux怎麼啟動mysql伺服器

Linux啟動Mysql伺服器的方法:

1、查看mysql版本
方法一:status;
方法二:select version();

2、Mysql啟動常用命令

(1)、使用 service 啟動:

[root@localhost /]# service mysqld start (5.0版本是mysqld)

[root@szxdb etc]# service mysql start (5.5.7版本是mysql)

(2)、使用 mysqld 腳本啟動:
/etc/inint.d/mysqld start

(3)、使用 safe_mysqld 啟動:
safe_mysqld&

Ⅱ 幾個常用的MySQL性能測試工具

1、mysqlslap
安裝:簡單,裝了mysql就有了

作用:模擬並發測試資料庫性能。

優點:簡單,容易使用。

不足:不能指定生成的數據規模,測試過程不清楚針對十萬級還是百萬級數據做的測試,感覺不太適合做綜合測試,比較適合針對既有資料庫,對單個sql進行優化的測試。

使用方法
可以使用mysqlslap --help來顯示使用方法:

Default options are read from the following files in the given order:
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf

--concurrency代表並發數量,多個可以用逗號隔開,concurrency=10,50,100, 並發連接線程數分別是10、50、100個並發。

--engines代表要測試的引擎,可以有多個,用分隔符隔開。
--iterations代表要運行這些測試多少次。
--auto-generate-sql 代表用系統自己生成的SQL腳本來測試。
--auto-generate-sql-load-type 代表要測試的是讀還是寫還是兩者混合的(read,write,update,mixed)
--number-of-queries 代表總共要運行多少次查詢。每個客戶運行的查詢數量可以用查詢總數/並發數來計算。
--debug-info 代表要額外輸出CPU以及內存的相關信息。
--number-int-cols :創建測試表的 int 型欄位數量
--auto-generate-sql-add-autoincrement : 代表對生成的表自動添加auto_increment列,從5.1.18版本開始
--number-char-cols 創建測試表的 char 型欄位數量。
--create-schema 測試的schema,MySQL中schema也就是database。
--query 使用自定義腳本執行測試,例如可以調用自定義的一個存儲過程或者sql語句來執行測試。
--only-print 如果只想列印看看SQL語句是什麼,可以用這個選項。

mysqlslap -umysql -p123 --concurrency=100 --iterations=1 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --engine=myisam --number-of-queries=10 --debug-info

或:

指定資料庫和sql語句:

mysqlslap -h192.168.3.18 -P4040 --concurrency=100 --iterations=1 --create-schema='test' --query='select * from test;' --number-of-queries=10 --debug-info -umysql -p123

要是看到底做了什麼可以加上:--only-print

Benchmark
Average number of seconds to run all queries: 25.225 seconds
Minimum number of seconds to run all queries: 25.225 seconds
Maximum number of seconds to run all queries: 25.225 seconds
Number of clients running queries: 100
Average number of queries per client: 0

以上表明100個客戶端同時運行要25秒

2、sysbench
安裝:
可以從http://sourceforge.net/projects/sysbench/ 下載
tar zxf sysbench-0.4.12.tar.gz
cd sysbench-0.4.12
./autogen.sh
./configure && make && make install
strip /usr/local/bin/sysbench

安裝時候可能會報錯,後來發現個好文 http://blog.csdn.net/icelemon1314/article/details/7004955 怕以後找不到,也貼過來吧

1.如果mysql不是默認路徑安裝,那麼需要通過指定--with-mysql-includes和--with-mysql-libs參數來載入mysql安裝路徑
2.如果報錯:
../libtool: line 838: X--tag=CC: command not found
../libtool: line 871: libtool: ignoring unknown tag : command not found
../libtool: line 838: X--mode=link: command not found
../libtool: line 1004: *** Warning: inferring the mode of operation is deprecated.: command not found
../libtool: line 1005: *** Future versions of Libtool will require --mode=MODE be specified.: command not found
../libtool: line 2231: X-g: command not found
../libtool: line 2231: X-O2: command not found
那麼執行下根目錄的:autogen.sh文件,然後重新configure && make && make install
3.如果報錯:
sysbench: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
那麼執行下:
n -s /usr/local/mysql5.5/mysql/lib/libmysqlclient.so.18 /usr/lib64/
4.如果執行autogen.sh時,報如下錯誤:
./autogen.sh: line 3: aclocal: command not found
那麼需要安裝一個軟體:
yum install automake
然後需要增加一個參數:查找: AC_PROG_LIBTOOL 將其注釋,然後增加AC_PROG_RANLIB

作用:模擬並發,可以執行CPU/內存/線程/IO/資料庫等方面的性能測試。資料庫目前支持MySQL/Oracle/PostgreSQL

優點:可以指定測試數據的規模,可以單獨測試讀、寫的性能,也可以測試讀寫混合的性能。

不足:測試的時候,由於網路原因,測試的非常慢,但是最終給的結果卻很好,並發支持很高,所以給我的感覺是並不太准確。當然也可能我沒搞明白原理

使用方法:

准備數據
sysbench --test=oltp --mysql-table-engine=myisam --oltp-table-size=400000 --mysql-db=dbtest2 --mysql-user=root --mysql-host=192.168.1.101 --mysql-password=pwd prepare
執行測試
sysbench --num-threads=100 --max-requests=4000 --test=oltp --mysql-table-engine=innodb --oltp-table-size=400000 --mysql-db=dbtest1 --mysql-user=root --mysql-host=192.168.1.101 --mysql-password=pwd run

sysbench 0.4.12: multi-threaded system evaluation benchmark

No DB drivers specified, using mysql
Running the test with following options:
Number of threads: 100

Doing OLTP test.
Running mixed OLTP test
Using Special distribution (12 iterations, 1 pct of values are returned in 75 pct cases)
Using "BEGIN" for starting transactions
Using auto_inc on the id column
Maximum number of requests for OLTP test is limited to 4000
Threads started!
Done.

OLTP test statistics:
queries performed:
read: 56014
write: 20005
other: 8002
total: 84021
transactions: 4001 (259.14 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 76019 (4923.75 per sec.)
other operations: 8002 (518.29 per sec.)

Test execution summary:
total time: 15.4393s
total number of events: 4001
total time taken by event execution: 1504.7744
per-request statistics:
min: 33.45ms
avg: 376.10ms
max: 861.53ms
approx. 95 percentile: 505.65ms

Threads fairness:
events (avg/stddev): 40.0100/0.67
execution time (avg/stddev): 15.0477/0.22

3、tpcc-mysql
安裝:
如果從原網站上下載源碼比較麻煩,需要工具、注冊、生成證書等。這里提供一個下載包http://blog.chinaunix.net/blog/downLoad/fileid/8532.html
export C_INCLUDE_PATH=/usr/include/mysql
export PATH=/usr/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib/mysql
cd /tmp/tpcc/src
make
然後就會在 /tmp/tpcc-mysql 下生成 tpcc 命令行工具 tpcc_load 、 tpcc_start

作用:測試mysql資料庫的整體性能

優點:符合tpcc標准,有標準的方法,模擬真實的交易活動,結果比較可靠。

不足:不能單獨測試讀或者寫的性能,對於一些以查詢為主或者只寫的應用,就沒有這么大的意義了。

使用方法:

載入數據
創建庫
mysql>create database tpcc10;
創建表:
shell>mysql tpcc10 < create_table.sql
添加外鍵:
shell>mysql tpcc10 < add_fkey_idx.sql

載入數據:
1、單進程載入:
shell>./tpcc_load 192.168.11.172 tpcc10 root pwd 300
|主機||資料庫||用戶||密碼||warehouse|
2、並發載入:(推薦,但需要修改一下)
shell>./load.sh tpcc300 300
|資料庫||warehouse|
3、測試
./tpcc_start -h192.168.11.172 -d tpcc -u root -p 'pwd' -w 10 -c 10 -r 10 -l 60 -i 10 -f /mnt/hgfs/mysql/tpcc100_2013522.txt
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
option h with value '192.168.11.172'
option d with value 'tpcc'
option u with value 'root'
option p with value 'pwd'
option w with value '1'
option c with value '100'
option r with value '120'
option l with value '60'
option i with value '10'
option f with value '/mnt/hgfs/mysql/tpcc100_2013522.txt'
<Parameters>
[server]: 192.168.11.172
[port]: 3306
[DBname]: tpcc
[user]: root
[pass]: pwd
[warehouse]: 1
[connection]: 100
[rampup]: 120 (sec.)
[measure]: 60 (sec.)

RAMP-UP TIME.(120 sec.)

MEASURING START.

如何小鳥雲伺服器 上lamp 環境 mysql的訪問地址

對於PHP入門用戶來說,我們只要掌握基本的資料庫寫入、讀取、編輯、刪除等基本的操作就算入門,也可以寫出簡單的程序出來,比如留言本、新聞文章系統等等。 在整個過程中,MySQL資料庫的連接也是比較重要的,可以使用多種方法進行連接,對於新手來說我們就不要去分析哪種方式對於系統資源的優化程度,我們先能連接上就行。

這里,整理幾種常用的PHP連接MySQL資料庫的方法。

常用普通方法

$mysql_server="localhost";
$mysql_username="資料庫用戶名";
$mysql_password="資料庫密碼";
$mysql_database="資料庫名";

//建立資料庫鏈接
$conn = mysql_connect($mysql_server,$mysql_username,$mysql_password) or die("資料庫鏈接錯誤");

//選擇某個資料庫
mysql_select_db($mysql_database,$conn);
mysql_query("set names 'utf8'");

//執行MySQL語句
$result=mysql_query("SELECT id,name FROM 資料庫表");

//提取數據
$row=mysql_fetch_row($result);
在提取數據的時候,我們使用mysql_fetch_row,還可以使用mysql_fetch_assoc和mysql_fetch_array,具體的我們參考手冊。

面向對象方法

$db=new mysqli($dbhost,$username,$userpass,$dbdatabase);
if(mysqli_connect_error()){
echo 'Could not connect to database.';
exit;
}
$result=$db->query("SELECT id,name FROM user");
$row=$result->fetch_row();

PDO方法

$dsn='mysql:host='.$dbhost.';dbname='.$dbdatabase.';'
$dbh=new PDO($dsn,$username,$userpass);
$stmt=$dbh->query('SELECT id,name FROM user');
$row=$stmt->fetch();

以上是常用的3種PHP連接MySQL資料庫的方法,我們可以嘗試使用,一般我們用第一種比較多。

Ⅳ mysql 無法啟動的幾種常見問題

1、情況一:MySQL的錯誤日誌文件(安裝目錄\MYOA\data5\機器名.err)會記錄如下內容:
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Error: trying to add tablespace 460 of name '.\td_oa\flow_data_35.ibd'
InnoDB: to the tablespace memory cache, but tablespace
InnoDB: 460 of name '.\td_oa\exam_data.ibd' already exists in the tablespace
解決方法
1)剪切出安裝目錄\MYOA\data5\TD_OA的flow_data_35.ibd和flow_data_35.frm兩個文件;
2)啟動MySQL5_OA服務,使用備份的flow_data_35.sql導入到TD_OA庫中。如果提示flow_data_35表已經存在不能導入,則繼續按後續步驟執行;
3)在data5下手動建立tmp目錄;
4)使用MySQL管理工具或MySQL命令行程序在tmp下建立名稱為flow_data_35的表(包含一個欄位即可);
5)將tmp下的flow_data_35.frm和flow_data_35.ibd拷貝到安裝目錄\MYOA\data5\TD_OA目錄下;
6)在MySQL管理工具或MySQL命令行程序中,進入TD_OA庫,使用「drop table flow_data_35;」命令清除公共表空間中殘留的flow_data_35表的相關信息;
7)進入tmp庫,刪掉flow_data_35表;
8)使用備份的flow_data_35.sql導入到TD_OA庫中;
9)如果還有其他表存在該問題,可重復執行4至8步驟。
2、情況二:MySQL的錯誤日誌文件(安裝目錄\MYOA\data5\機器名.err)會記錄如下內容:
130409 15:54:31 [Note] Plugin 'FEDERATED' is disabled.
130409 15:54:31 InnoDB: The InnoDB memory heap is disabled
130409 15:54:31 InnoDB: Mutexes and rw_locks use Windows interlocked functions
130409 15:54:31 InnoDB: Compressed tables use zlib 1.2.3
130409 15:54:32 InnoDB: Initializing buffer pool, size = 1023.0M
InnoDB: VirtualAlloc(1086849024 bytes) failed; Windows error 8
130409 15:54:32 InnoDB: Completed initialization of buffer pool
130409 15:54:32 InnoDB: Fatal error: cannot allocate memory for the buffer pool
130409 15:54:32 [ERROR] Plugin 'InnoDB' init function returned error.
130409 15:54:32 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
130409 15:54:32 [ERROR] Unknown/unsupported storage engine: Innodb
130409 15:54:32 [ERROR] Aborting
解決方法:
此情況出現的原因是myoa\mysql5\my.ini中innodb_buffer_pool_size的值太大,OA伺服器操作系統不支持所致。改小後再啟動mysql5_OA服務即可,一般保持和資料庫大小一致。資料庫大小即是myoa/data5的大小。
3、情況三:mysql服務啟動不了,事件查看器中顯示:The syntax '--log-slow-queries' is deprecated and will be removed in a future release. Please use '--slow-query-log'/'--slow-query-log-file' instead.
解決方法:安裝目錄\MYOA\data5下的ibdata1、ib_logfile0、ib_logfile1文件屬性被設置為只讀導致,取消只讀控制,重啟mysql5_OA服務即可。
4、情況四:MySQL的錯誤日誌文件(data5\機器名.err)會記錄如下內容:InnoDB: No valid checkpoint found.
解決方法:此問題找不到檢查點,資料庫是無效的,此種情況,只能用熱備份數據恢復。
5、以上四種情況,是2013版OA系統目前比較常見的mysql服務啟動不了的現象和解決辦法,大家可作參考,其他情況的話,再具體分析處理。
6、分析思路總結:遇到mysql5_OA服務啟動不了的情況,首先查看myoa\data5下的錯誤日誌文件,根據日誌中的具體內容進行具體分析。
7、2013版MYSQL服務啟動不了(可以嘗試強制啟動mysql服務)方法如下:
1)打開\MYOA\mysql5\my.ini,去掉innodb_force_recovery=1前邊的注釋。
2)啟動MySQL5_OA服務,此時MySQL處於只讀狀態,可以導出,不可寫入。如果仍不能啟動,可以嘗試將innodb_force_recovery修改為2、3、4、5、6等,直到可以啟動為止。
3)使用MySQL管理工具,將TD_OA等相關的資料庫導出為SQL文件。
4)停止MySQL5_OA服務,刪除TD_OA下的所有文件、ibdata1、ib_logfile0、ib_logfile1等文件。
5)打開\MYOA\mysql5\my.ini,在innodb_force_recovery=1前邊加上#號,將該項注釋掉。
6)啟動MySQL5_OA服務,然後導入此前備份的SQL文件。
7)檢查資料庫,將無法通過該方法恢復的數據表,通過之前自動備份的SQL文件進行恢復。

Ⅳ MySQL實用教程的內容簡介

通過《MySQL實用教程》,可以基本掌握當前幾個流行平台開發MySQL資料庫應用系統的方法,比較好地解決MySQL學與用的問題。《MySQL實用教程》的內容體系具有自己的特色,從方便教和學兩個角度組織內容。
《MySQL實用教程》可作為大學本科、高職高專有關課程教材,也可供廣大資料庫應用開發人員使用、參考。
《MySQL實用教程》以當前最流行MySQL5.1作為平台,分為4個部分,它們分別是MySQL (含習題)、實驗、客戶端/MySQL綜合應用實習和附錄。比較系統介紹MySQL的功能,同時系統介紹Linux下PHP、Windows下ASP.NET(C#)和JSP(JavaBean)與MySQL的應用方法。通過本書,基本掌握了當前幾個流行平台開發MySQL資料庫應用系統的方法,比較好地解決了MySQL學和用的問題。由於本書的內容體系具有自己的特色,並且從方便教和學兩個角度組織內客。

Ⅵ 關於mysqld的問題

LINUX下PHP+MYSQL+APACHE配置過程

需要軟體如下:
apache: http://www.apache.org
mysql: http://www.mysql.com
php: http://www.php.net/downloads.php
gd: http://www.boutell.com/gd/#buildgd
ZendOptimizer http://www.zend.org/procts/zend_optimizer
Gettext http://ftp.gnu.org/pub/gnu/gettext/
netpbm http://sourceforge.net/projects/netpbm/
所用的軟體版本如下:
Redhat Enterprise As 4
(apache)httpd-2.0.50.tar.gz
mysql-standard-5.0.18-linux-i686.tar.gz
php-5.1.2.tar.gz
gd-2.0.33.tar.gz
ZendOptimizer-2.6.2-linux-glibc21-i386.tar.gz
Imap
Gettext

一.安裝MYSQL mysql-standard-5.0.18-linux-i686.tar.gz
我把他全部下載到/usr/local/software目錄下
進入安裝包目錄:cd /usr/local/software
1、[root@localhost software]# chmod 755 mysql-standard-5.0.18-linux-i686.tar.gz
2、[root@localhost software]# tar xfz mysql-standard-5.0.18-linux-i686.tar.gz
解壓後生成mysql-standard-5.0.18-linux-i686目錄,我們進入該目錄:
3、[root@localhost software]# cd mysql-standard-5.0.18-linux-i686
進入後就開始配置mysql了,配置過程中我們要給mysql設置一個
安裝目錄,我們設置在 /usr/local/mysql 下,以為把文件放到一個地方比較容易管理,如果你還想獲得更多的配置信息,使用 ./configure --help:
在這里我要特別強調在編譯的時候要選擇好MYSQL的默認編碼,因為如果不選擇按默認安裝的時候在JSP中就不支持GBK編碼了
所以我這樣編譯
訪問mysql要一個專門的用戶,而且必須給相應的訪問許可權,這里我們就設置root和mysql有許可權訪問.
7、我們先建立一個mysql和mysql用戶來訪問mysql:
[root@localhost mysql-standard-5.0.18-linux-i686]# groupadd mysql #建立mysql組
8、[root@localhost mysql-standard-5.0.18-linux-i686]# useradd mysql -g mysql #建立mysql用戶並且加入到mysql組中
9、建立用戶後我們就初始化表 (注意:必須先執行本步驟後才能進行以下步驟)
[root@localhost mysql-standard-5.0.18-linux-i686]# ./scripts/mysql_install_db --user=mysql
#初試化表並且規定用mysql用戶來訪問初始化表以後就開始給mysql和root用戶設定訪問許可權,;
10、[root@localhost mysql-standard-5.0.18-linux-i686]# mv mysql-standard-5.0.18-linux-i686 /usr/local/mysql
然後設置許可權
cd /usr/local/mysql

11、[root@localhost mysql]# chown -R root . #設定root能訪問/usr/local/mysql
12、[root@localhost mysql]# chown -R mysql data #設定mysql用戶能訪問/usr/local/mysql/data ,裡面存的是mysql的資料庫文件
13、[root@localhost mysql]# chgrp -R mysql . #設定mysql組能夠訪問/usr/local/mysql
14、設置完成後,基本上就裝好了,好了,我們運行一下我們的mysql:
[root@localhost mysql]# /usr/local/mysql/bin/mysqld_safe --user=mysql &
如果沒有問題的話,應該會出現類似這樣的提示:
[1] 42264
# Starting mysqld daemon with databases from /usr/local/mysql/var

這就證明你安裝成功了
用如下命令修改root密碼,默認安裝密碼為空,為了安全你必須馬上修改
15、/usr/local/mysql/bin/mysqladmin -uroot password xksoft321
現在修改的密碼為:xksoft321
16.設置開機自動啟動
cp support-files/mysql.server /etc/init.d/

二、安裝apache
進入安裝包目錄:cd /usr/local/software
1、# chmod 755 httpd-2.0.50.tar.gz
2、# tar xfz httpd-2.0.50.tar.gz
3、# cd httpd-2.0.50
開始配置APACHE
4、#./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite --enable-mods-shared=most
# ./configure --prefix=/usr/local/apache2 --enable-so --enable-mole=most --enable-shared=max --enable-rewrite
# ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite --enable-access
#./configure --prefix=/usr/local/apache2 --enable-so --enable-mods-shared=all –-enable-rewrite=shared

5、# make
6、# make install
7、察看編譯進apache的模塊:
# /usr/local/apache2/bin/httpd -l
compiled-in moles:
http_core.c
mod_so.c
看到以上的信息表明apache支持dso方式了。這樣就可以用dso的方式把php和resin的模塊加進來。

三、安裝GD
進入安裝包目錄:cd /usr/local/software
1、tar -zxvf gd-2.0.33.tar.gz
2、cd gd-2.0.33
3、./configure --prefix=/usr/local/gd2
4、make
5、make install

Gettext
1 .tar xfz
2 cd
3 ./configure –with-prefix=/usr/local/gettext
4 make
5 make install

四、安裝php
進入安裝包目錄:cd /usr/local/software
1、# tar xfz php-5.1.2.tar.gz
2、解壓後進入目錄:
# cd php-5.1.2
3、進行配置,這一步比較關鍵,一定要設置好,特別是要考慮到你要支持什麼,比如GD庫,xml,mysql等等,如果想知道詳細的配置,執行 ./configure --help來獲得:
# ./configure --enable-mbstring=LANG --with-mysql=/usr/local/mysql --with-gd=/usr/local/gd2 --with-apxs2=/usr/local/apache2/bin/apxs –with-gettext=/usr/local/gettext
――enable-mbstring=LANG(解決php extension:mbstring的問題)
如果上面的配置沒有錯誤的話,那麼應該最後會顯示感謝使用PHP等字樣,那麼證明配置成功,如果上面的配置選項不支持的話,會提示錯誤.
比如你沒有安裝mysql,那麼--with-mysql就無法使用,所以一定要注意對應選項系統是否能夠支持,如果出現錯誤,那麼就先安裝對應的程序,或者去掉相關選項,配置之後就進行編譯:
4、# make
編譯成功後出現"Build complete."字樣,那麼就可以進行安裝了:
5、# make install
6、安裝完成後把php.ini-dist復制到/usr/local/lib/,並重命名為php.ini
# cp php.ini-dist /usr/local/lib/php.ini
基本到這里PHP就安裝成功了,如果中間出現錯誤,除了在配置的時候沒有選對選項之後一般都不出現錯誤.
7、為了讓Apache能夠直接解析php,我們還要進行一些配置.
# vi /usr/local/apache2/conf/httpd.conf
在httpd.conf文件中,添加(應該將以下兩句添加在其他AddType之後)
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
確保文件中有以下一句話,沒有就自己添加在所有LoadMole之後:
LoadMole php5_mole moles/libphp5.so
把index.php加入以下DirectoryIndex後面
DirectoryIndex index.php index.html index.html.var
好了,在vi中使用":wq"保存httpd.conf文件,退出vi。
8、啟動apache server:
# /usr/local/apache2/bin/apachectl restart
現在apache就能夠運行php了,寫個文件測試一下,在/usr/local/apache2/htdocs目錄下,新建一個phpinfo.php文件,
文件中只有一行代碼:
<? phpinfo(); ?>
保存此文件, 在你的瀏覽器中輸入http://localhost/phpinfo.php,你應該看到PHP的系統信息。
如果出現錯誤,比如提示你下載phpinfo.php,那麼apache就是還無法解析php文件,那麼請仔細檢查以上的操作是否正確.

五、ZendOptimizer
進入安裝包目錄:cd /usr/local/software
1、# tar xfz ZendOptimizer-2.6.2-linux-glibc21-i386.tar.gz
2、# cd ZendOptimizer-2.6.2-linux-glibc21-i386
3、# ./install.sh
4、問Confirm the location of your php.ini file的時候打入/usr/local/lib/
問Are you using Apache web server?的時候選YES

六、
1、./configure --prefix=/usr
2、make
3、make check
4、make install

隨系統啟動服務配置
如果要在計算機啟動的時候就運行httpd服務,可以在/etc/rc.d/rc.local文件中加入這幾行:
#start apache
/usr/local/apache2/bin/apachectl start

如果啟動不了,請給相應的啟動腳本可執行許可權
比如apache啟動不了 chmod a=x apachectl

為了以後操作不要輸入類似/usr/local/apache2/bin的路徑,在/etc/profile文件中添加$PATH變數
把apache、tomcat和mysql的路徑都加上

附:
一、建立resin和apache的虛擬主機
例如建立的是tes1.jsp.com test2.jsp.com 兩個虛擬主機

vi /usr/java/httpd2/conf/httpd.conf
復制如下內容到httpd.conf里
NameVirtualHost 192.168.0.* 虛擬主機建立所在的IP
<VirtualHost 192.168.1.*>
DocumentRoot /home/jsp1/ 文件所在目錄
ServerName tes1.jsp.com 訪問的域名
</VirtualHost>
VirtualHost 192.168.1.*>
DocumentRoot /home/jsp2/
ServerName test2.jsp.com
</VirtualHost>
vi /usr/java/resin/conf/resin.conf
查找如下代碼並修改:

<host id="" root-directory=".">
<!--
- configures an explicit root web-app matching the
- webapp's ROOT
-->
<web-app id='/' document-directory="/usr/java/httpd2/htdocs"/>
</host>
<host id='tes1.jsp.com'>
<web-app id='/' document-directory="/home/jsp1"/>
</host>
<host id='tes2.jsp.com'>
<web-app id='/' document-directory="/home/jsp2"/>
</host>
保存從啟apache和resin
tes1.jsp.com 和tes2.jsp.com 虛擬主機可以運行了
可以做如下測試http://localhost/caucho-status/
可以看到測試面上有
Virtual Host: tes1.jsp.com:80
Virtual Host: tes2.jsp.com:80
證明JSP虛擬主機工作很正常
二、linux軟體安裝
從網站或者是光碟上找到的Linux軟體包,常見的格式包括有rpm,deb,tar,gz,tgz,zip,bz2等等。我們平時用的最多的恐怕是rpm和tgz了,據統計,在網上最流行的版本應改是redhat和mandrake了,而這兩個版本都是用rpm封裝
的,tar是最通用的軟體包格式,幾乎每個linux軟體都會提供tar的格式的軟體包,因為這種格式的軟體包任何版本的linux都支持,所以大家至少要了解tar和rpm的使用方法。至於deb可用alien工具轉換成tgz或rpm方式。bz2可用bunzip2解包即可。
1、RPM文件的安裝
RPM是RedHat Package Manager(RedHat軟體包管理工具)的縮寫,這一文件格式名稱雖然打上了RedHat的標志,但是其原始設計理念是開放式的,現在包括OpenLinux,mandrake及Turbo Linux等Linux的分發版本都有採用,可以算是公認的行業標准了。
RPM文件在Linux系統中的安裝最為簡便。以著名的圖像處理軟體XV為例:
在Terminal中,基本的安裝指令如下:
rpm -i xv-3.10a-13.i386.rpm
如果你的連網速度足夠快,也可以直接從網路上安裝應用軟體,只需要在軟體的文件名前加上適當的URL路徑:
rpm -i ftp://ftp.trilon.com/pub/xv/xv-3.10a-13.i386.rpm
作為一個軟體包管理工具,RPM管理著系統已安裝的所有RPM程序組件的資料。我們也可以使用RPM來卸載相關的應用程序。
rpm -e xv
RPM的常用參數還包括:
-vh:顯示安裝進度;
-U:升級軟體包;
-qpl:列出RPM軟體包內的文件信息;
-qpi:列出RPM軟體包的描述信息;
-qf:查找指定文件屬於哪個RPM軟體包;
-Va:校驗所有的RPM軟體包,查找丟失的文件;
更為詳盡的參數及其用法可以查看RPM的幫助文檔。
在X-Window中,RPM文件的圖形化安裝及管理方式對用戶來說,顯得更為友好。在kde上先安裝好kpackage後,安裝rpm僅僅是按一下滑鼠就可以了,比windows 98更方便。但是這必須先安裝kde.
我還是介紹更常用的方法吧,仍以XV軟體為例,在Linux的文件管理器中找到xv-3.10a-13.i386.rpm文件之後,用滑鼠右擊它,在彈出菜單中就可以找到專為RPM軟體包準備的三個指令:Show Info、Upgrade、Install。
選擇「Show Info」之後,我們將可以看到如圖所示的軟體包信息窗口。窗口分為三個部分,頂端顯示的是軟體名、大小、創建及安裝日期以及開發者網站等相關信息;在中間的方框內,是關於軟體的概述;而下面顯示的則是軟體包內包含的所有文件及其路徑信息,它會告訴你軟體包內的各個文件將被安裝到系統的哪些目錄中,
留意這些信息的好處是,你可以很容易地找到啟動程序的路徑。
此時點擊底部的「Install」或者「Upgrade」按鈕之後,將開始進行軟體的安裝或者升級,此時還會彈出一個提示安裝進度的窗口。
RPM軟體包較之於其他類型的軟體包,有著許多優勢,但是並不是說RPM軟體的安裝都是一帆風順的。常見的錯誤包括***圖安裝一個已經安裝好了的軟體、所要安裝的軟體需要其他軟體或者系統庫文件的支持(此時應該先行安裝這些相關軟體或者系統庫文件)等,情形都和Windows類似。

2、tar的安裝
tar.gz、tar.Z、tgz、bz2等文件格式要先解壓為tar後再用tar解包安裝。解壓縮及解包指令舉例簡述如下:
1.解xv.tar.gz:tar zxf xv.tar.gz
2.解xv.tar.Z:tar zxf xv.tar.Z
3.解xv.tgz:tar zxf xv.tgz
4.解xv.bz2:bunzip2 xv.bz2
5. 解xv.tar:tar xf xv.tar
解包後得到的一堆文件,通常都會存放在一個目錄裡面。視軟體作者的不同,有些會是已經編譯好的程序,更多的則是需要自己再行編譯的源代碼。進入相應目錄後,使用「ls -F -color」指令,可執行程序將會以帶「*」標記的亮綠色顯示,對於已編譯好的程序,直接鍵入帶路徑的指令行即可運行程序。
建議解壓後先閱讀說明文件,應該先用vi等文書編輯器閱讀一下軟體目錄中的Readme、Install等重要的相關文檔,在這里你會找到軟體詳盡的編譯步驟及注意事項,可以了解安裝有哪些需求,有必要時還需改動編譯配置。
有些軟體包的源代碼在編譯安裝後可以用make install命令來進行卸載,如果不提供此功能,則軟體的卸載必須手動刪除。由於軟體可能將文件分散地安裝在系統的多個目錄中,往往很難把它刪除干凈,那你應該在編譯前進行配置,指定軟體將要安裝到目標路徑:./configure --prefix=目錄名,這樣可以使用「rm -rf 軟體目錄名」命令來進行干凈徹底的卸載。與其它安裝方式相比,需要用戶自己編譯安裝是最難的,它適合於使用Linux已有一定經驗的人,一般不推薦初學者使用。
通常的編譯步驟會是這樣:
./configure
make
make install(需要取得root身份才能執行此指令)
卸載可用:make uninstall 或 手動刪除
編譯完成之後,在當前目錄或者是名為src的子目錄下,可以很容易地發現軟體的可執行程序。至此,軟體的安裝便告一段落。

3、關於src源代碼文件包
Linux軟體的源代碼src是指提供了該軟體所有程序源代碼的發布形式,需要用戶自己編譯成可執行的二進制代碼bin並進行安裝,其優點是配置靈活,可以隨意去掉或保留某些功能/模塊,適應多種硬體/操作系統平台及編譯環境,缺點是難度較大,一般不適合初學者使用。
怎麼知道一個tar.gz/bz2包是二進制文件包呢還是源代碼包?要分辨它到底是什麼最好的辦法就是查看包里的文件清單,使用命令tar ztvf *.tar.gz解壓縮及解包後,進入新生成的目錄下。
源代碼包里的文件往往會含有種種源代碼文件,頭文件*.h、c代碼源文件*.c、C++代碼源文件*.cc/*.cpp等;而二進制包里的文件則會有可執行文件(與軟體同名的往往是主執行文件),標志是其所在路徑含有名為bin的目錄(僅有少數例外)。
如果是src.tar可在解包後,在新生成的目錄下編譯,方法前面已介紹過了,現在講一講src.rpm的安裝和協載:
安裝:rpm -rebuild xv.src.rpm
cd /usr/src/redhat/RPMS/
rpm -ivh *.rpm
卸載:rpm -e xv
說明:rpm --rebuild *.src.rpm命令將源代碼編譯並/usr/src/redhat/RPMS下生成二進制的rpm包,然後再安裝該二進制包即可。
三、文件許可權更改
chmod ------入門的一些常識
http://www.chinaunix.net 作者:wangbin 發表於:2003-09-13 23:49:13

指令名稱 : chmod
使用許可權 : 所有使用者

使用方式 : chmod [-cfvR] [--help] [--version] mode file...

說明 : Linux/Unix 的檔案存取許可權分為三級 : 檔案擁有者、群組、其他。利用 chmod 可以藉以控制檔案如何被他人所存取。

把計 :

mode : 許可權設定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬於同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是。
+ 表示增加許可權、- 表示取消許可權、= 表示唯一設定許可權。
r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該檔案是個子目錄或者該檔案已經被設定過為可執行。
-c : 若該檔案許可權確實已經更改,才顯示其更改動作
-f : 若該檔案許可權無法被更改也不要顯示錯誤訊息
-v : 顯示許可權變更的詳細資料
-R : 對目前目錄下的所有檔案與子目錄進行相同的許可權變更(即以遞回的方式逐個變更)
--help : 顯示輔助說明
--version : 顯示版本

範例 :將檔案 file1.txt 設為所有人皆可讀取 :
chmod ugo+r file1.txt

將檔案 file1.txt 設為所有人皆可讀取 :
chmod a+r file1.txt

將檔案 file1.txt 與 file2.txt 設為該檔案擁有者,與其所屬同一個群體者可寫入,但其他以外的人則不可寫入 :
chmod ug+w,o-w file1.txt file2.txt

將 ex1.py 設定為只有該檔案擁有者可以執行 :
chmod u+x ex1.py

將目前目錄下的所有檔案與子目錄皆設為任何人可讀取 :
chmod -R a+r *

此外chmod也可以用數字來表示許可權如 chmod 777 file
語法為:chmod abc file

其中a,b,c各為一個數字,分別表示User、Group、及Other的許可權。

r=4,w=2,x=1
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=7。

範例:
chmod a=rwx file


chmod 777 file

效果相同
chmod ug=rwx,o=x file


chmod 771 file

效果相同

若用chmod 4755 filename可使此程式具有root的許可權
指令名稱 : chown
使用許可權 : root

使用方式 : chmod [-cfhvR] [--help] [--version] user[:group] file...

說明 : Linux/Unix 是多人多工作業系統,所有的檔案皆有擁有者。利用 chown 可以將檔案的擁有者加以改變。一般來說,這個指令只有是由系統管理者(root)所使用,一般使用者沒有許可權可以改變別人的檔案擁有者,也沒有許可權可以自己的檔案擁有者改設為別人。只有系統管理者(root)才有這樣的許可權。

把計 :

user : 新的檔案擁有者的使用者 IDgroup : 新的檔案擁有者的使用者群體(group)-c : 若該檔案擁有者確實已經更改,才顯示其更改動作-f : 若該檔案擁有者無法被更改也不要顯示錯誤訊息-h : 只對於連結(link)進行變更,而非該 link 真正指向的檔案-v : 顯示擁有者變更的詳細資料-R : 對目前目錄下的所有檔案與子目錄進行相同的擁有者變更(即以遞回的方式逐個變更)--help : 顯示輔助說明--version : 顯示版本

範例 :
將檔案 file1.txt 的擁有者設為 users 群體的使用者 jessie :
chown jessie:users file1.txt

將目前目錄下的所有檔案與子目錄的擁有者皆設為 users 群體的使用者 lamport :
chmod -R lamport:users *
-rw------- (600) -- 只有屬主有讀寫許可權。

-rw-r--r-- (644) -- 只有屬主有讀寫許可權;而屬組用戶和其他用戶只有讀許可權。

-rwx------ (700) -- 只有屬主有讀、寫、執行許可權。

-rwxr-xr-x (755) -- 屬主有讀、寫、執行許可權;而屬組用戶和其他用戶只有讀、執行許可權。

-rwx--x--x (711) -- 屬主有讀、寫、執行許可權;而屬組用戶和其他用戶只有執行許可權。

-rw-rw-rw- (666) -- 所有用戶都有文件讀、寫許可權。這種做法不可取。

-rwxrwxrwx (777) -- 所有用戶都有讀、寫、執行許可權。更不可取的做法。

以下是對目錄的兩個普通設定:

drwx------ (700) - 只有屬主可在目錄中讀、寫。

drwxr-xr-x (755) - 所有用戶可讀該目錄,但只有屬主才能改變目錄中的內容。

四、常用linux命令
1、進入純命令行
在終端輸入
#/sbin/telinit 3
2、root密碼丟失解決
GRUB:在引導裝載程序菜單上,鍵入 [e] 來進入編輯模式。
你會面對一個引導項目列表。查找其中類似以下輸出 的句行:
kernel /vmlinuz-2.4.18-0.4 ro root=/dev/hda2
按箭頭鍵直到這一行被突出顯示,然後按 [e]。
你現在可在文本結尾處空一格再添加 single 來告訴 GRUB 引導單用戶 Linux 模式。按 [Enter] 鍵來使編輯結果生效。
你會被帶會編輯模式屏幕,從這里,按 , GRUB 就會引導單用戶 Linux 模式。 結束載入後,你會面對一個與以下相似的 shell 提示:
sh-2.05#
現在,你便可以改變根命令,鍵入:
bash# passwd root
你會被要求重新鍵入口令來校驗。結束後, 口令就會被改變,你便可以在提示下鍵入 reboot 來重新引導;然後,象平常一樣登錄為根用戶。
LILO:當系統啟動到出現LILO引導畫面時,對於圖形引導方式按TAB鍵進入文本方式,然後在LILO處
輸入linux single回車即可進入免密碼的控制台,進入以後使用passwd命令修改root的密碼
即可。

五、mysql資料庫操作
連接資料庫伺服器 ./mysql -h host_name -u user_name -p
* -h host_name(--host=host_name),連接的資料庫主機名,如果在本地主機上則可省略。
*-u user_name(--user=user_name),資料庫用戶名,在unix系統上,如果系統的登錄名與數據用戶名一樣,則可省略。在windows系統中,可通過設置環境變數USER來給出資料庫用戶名,如set USER=username。
* -p(--password),提供資料庫用戶密碼,有該選項mysql就會提示你輸入密碼。輸入的密碼以星號顯示,以確保安全。也可直接在-p後寫上密碼(-p和密碼間不能有空格),但這不安全,不推薦。
連接成功後,mysql資料庫伺服器會顯示一些歡迎信息。接著就可用mysql>use database_name命令打開指定的資料庫。grant all on egroupware.* to root@localhost identified by 'oletolet';
伺服器的啟動和關閉
在Linux和windows平台下MySQL伺服器的啟動方式有很大不同,這里將分開介紹:
* Linux平台:Linux平台下,每一個進程都需由一個用戶來運行,MySQL最好不要以root用戶來運行。我們可創建一個mysql用戶和mysql組,MySQL伺服器程序目錄和數據目錄由這個用戶和組所擁有,其它用戶沒有任何許可權。以mysql用戶來運行MySQL伺服器。% mysqld --user=mysql
#即使以root用戶執行該命令,MySQL資料庫還是會與mysql用戶ID關聯。 為了使伺服器在系統啟動時自動以mysql用戶運行,需配置my.cnf配置文件 ,把user=mysql包含在[mysqld]段中。
關閉伺服器可用% mysql.server stop或% mysqladmin -u root -p shutdown
* windows平台:手動方式:直接運行c:\mysqld命令。
作為服務方式:運行c:\mysqld-nt --install命令,把mysqld-nt安裝為windows的服務,此後,每當windows啟動時,它就會自動運行。mysqld-nt是一個支持命名管道的MySQL伺服器。
運行c:\mysqld-nt --remove可把服務刪除。
手動啟動關閉服務的方法是運行c:\net start mysql和c:\net stop mysql命令。

windows平台下:

用管理員帳號登錄伺服器,關閉MySQL資料庫伺服器。

使用--skip-grant-tables參數啟動伺服器:

c:\mysql\bin>mysqld-nt --skip-grant-tables

重新打開一個console窗口,用mysql命令登錄伺服器設置root的新密碼:

c:\mysql\bin>mysql
mysql> use mysql
mysql> set password for 'root'@'localhost' = password('password');

卸載rpm
查看是否安裝
rpm -qa | grep 包名
卸載 rpm –e 包名

載入光碟mount -t iso9660 /dev/hdc /mnt/cdrom

Ⅶ MySQL中常見的連接查詢方式有哪些

MySQL中常見的連接查詢有:等值連接,使用=連接兩列數據,所有能夠匹配的結果都會被顯示出來;內連接,關鍵字INNER JOIN ON,連接效果等同於等值連接;左連接,關鍵字LEFT JOIN ON,關鍵字左側的表的所有數據均顯示,關鍵字右側的表匹配內容顯示,無對應內容使用NULL填充;右連接,關鍵字RIGHT JOIN ON,關鍵字右側的表的所有數據均顯示,關鍵字左側的表匹配內容顯示,無對應內容使用NULL填充;一般情況下,左連接和右連接可以實現相同的連接效果。如果對這部分內容感興趣,可以從黑馬程序員獲取測試相關課程了解一下。

Ⅷ mysql有常用數據字典查詢方法

MYSQL沒有這些,MYSQL用SHWO命令查詢資料庫和表、欄位、索引等信息:

一些SHOW語句提供額外的字元集信息。這些語句包括SHOWCHARACTERSET、SHOWCOLLATION、SHOWCREATEDATABASE、SHOWCREATETABLE和SHOWCOLUMNS。

SHOWCHARACTERSET命令顯示全部可用的字元集。它帶有一個可選的LIKE子句來指示匹配哪些字元集名。例如:

mysql>SHOWCHARACTERSETLIKE'latin%';

+---------+-----------------------------+-------------------+--------+

|Charset|Description|Defaultcollation|Maxlen|

+---------+-----------------------------+-------------------+--------+

|latin1|cp1252WestEuropean|latin1_swedish_ci|1|

|latin2|ISO8859-2CentralEuropean|latin2_general_ci|1|

|latin5|ISO8859-9Turkish|latin5_turkish_ci|1|

|latin7|ISO8859-13Baltic|latin7_general_ci|1|

+---------+-----------------------------+-------------------+--------+

見13.5.4.1節,「SHOWCHARACTERSET語法」。

SHOWCOLLATION語句的輸出包括全部可用的字元集。它帶有一個可選的LIKE子句來指示匹配哪些校對規則名。例如:

mysql>SHOWCOLLATIONLIKE'latin1%';
+-------------------+---------+----+---------+----------+---------+
|Collation|Charset|Id|Default|Compiled|Sortlen|
+-------------------+---------+----+---------+----------+---------+
|latin1_german1_ci|latin1|5|||0|
|latin1_swedish_ci|latin1|8|Yes|Yes|0|
|latin1_danish_ci|latin1|15|||0|
|latin1_german2_ci|latin1|31||Yes|2|
|latin1_bin|latin1|47||Yes|0|
|latin1_general_ci|latin1|48|||0|
|latin1_general_cs|latin1|49|||0|
|latin1_spanish_ci|latin1|94|||0|
+-------------------+---------+----+---------+----------+---------+
見13.5.4.2節,「SHOWCOLLATION語法」。

SHOWCREATEDATABASE語句顯示創建給定資料庫的CREATEDATABASE語句。結果包括全部資料庫選項。支持DEFAULTCHARACTERSET和COLLATE。全部資料庫選項存儲在命名為db.Opt的文本文件中,該文件能夠在資料庫目錄中找到。

mysql>SHOWCREATEDATABASEtest;
+----------+-----------------------------------------------------------------+
|Database|CreateDatabase|
+----------+-----------------------------------------------------------------+
|test|CREATEDATABASE`test`/*!*/|
+----------+-----------------------------------------------------------------+
見13.5.4.4節,「SHOWCREATEDATABASE語法」

SHOWCREATETABLE與SHOWCREATEDATABASE相似,但是顯示創建給定資料庫的CREATETABLE語句。列定義顯示任何字元集規格,並且表選項包括字元集信息。

見13.5.4.5節,「SHOWCREATETABLE語法」

當以SHOWFULLCOLUMNS調用時,SHOWCOLUMNS語句顯示表中列的校對規則。具有CHAR、VARCHAR或TEXT數據類型的列有非NULL的校對規則。數值列和其它非字元類型的列有NULL校對規則。例如:

mysql>SHOWFULLCOLUMNSFROMperson\G

***************************1.row***************************

Field:id

Type:smallint(5)unsigned

Collation:NULL

Null:NO

Key:PRI

Default:NULL

Extra:auto_increment

Privileges:select,insert,update,references

Comment:

***************************2.row***************************

Field:name

Type:char(60)

Collation:latin1_swedish_ci

Null:NO

Key:

Default:

Extra:

Privileges:select,insert,update,references

Comment:

字元集不是顯示的部分。(字元集名隱含在校對規則名中。)

見13.5.4.3節,「SHOWCOLUMNS語法」。

Ⅸ Mysql常見的幾個錯誤問題及解決方法

一、Can』t connect to MySQL server on 『localhost』 (10061)
翻譯:不能連接到 localhost 上的mysql
分析:這說明「localhost」計算機是存在的,但在這台機器上卻沒提供MySQL服務。
需要啟動這台機器上的MySQL服務,如果機子負載太高沒空相應請求也會產生這個錯誤。
解決:既然沒有啟動那就去啟動這台機子的mysql。如果啟動不成功,多數是因為你的my.ini配置的有問題。重新配置其即可。
如果覺得mysql負載異常,可以到mysql/bin 的目錄下執行mysqladmin -uroot -p123 processlist來查看mysql當前的進程。

二、Unknown MySQL Server Host 『localhosadst』 (11001)
翻譯:未知的MySQL伺服器 localhosadst
分析:伺服器 localhosasdst 不存在。或者根本無法連接
解決:仔細檢查自己論壇下面的 ./config.inc.php 找到$dbhost重新設置為正確的mysql 伺服器地址。

三、Access denied for user: 『roota@localhost』 (Using password: YES)
翻譯:用戶 roota 訪問 localhost 被拒絕(沒有允許通過)
分析:造成這個錯誤一般資料庫用戶名和密碼相對mysql伺服器不正確
解決:仔細檢查自己論壇下面的 ./config.inc.php 找到$dbuser、$dbpw核實後重新設置保存即可。

四、Access denied for user: 『red@localhost』 to database 『newbbs』
翻譯:用戶 red 在localhost 伺服器上沒有許可權操作資料庫newbbs
分析:這個提示和問題三是不同的。那個是在連接資料庫的時候就被阻止了,而這個錯誤是在對資料庫進行操作時引起的。比如在select update等等。這個是因為該用戶沒有操作資料庫相應的權力。比如select 這個操作在mysql.user.Select_priv里記錄 Y 可以操作N 不可以操作。
解決:如果是自己的獨立主機那麼更新mysql.user 的相應用戶記錄,比如這里要更新的用戶為red 。或者直接修改 ./config.inc.php 為其配置一個具有對資料庫操作許可權的用戶
或者通過如下的命令來更新授權grant all privileges on dbname.* to 『user』@』localhost』 identified by 『password』
提示:更新了mysql庫中的記錄一定要重啟mysql伺服器才能使更新生效
FLUSH PRIVILEGES;

五、No Database Selected
翻譯:沒有資料庫被選擇上
分析:產生的原因有兩種
config.inc.php 裡面$dbname設置的不對。致使資料庫根本不存在,所以在 $db->select_db($dbname); 時返回了false
和上面問題四是一樣的,資料庫用戶沒有select許可權,同樣會導致這樣的錯誤。當你發現config.inc.php的設置沒有任何問題,但還是提示這個錯誤,那一定就是這種情況了。
解決:對症下葯
打開config.inc.php 找到$dbname核實重新配置並保存
同問題四的解決方法

六、Can』t open file: 『xxx_forums.MYI』. (errno: 145)
翻譯:不能打開xxx_forums.MYI
問題分析:
這種情況是不能打開 cdb_forums.MYI 造成的,引起這種情況可能的原因有:
1、伺服器非正常關機,資料庫所在空間已滿,或一些其它未知的原因,對資料庫表造成了損壞。
2、類 unix 操作系統下直接將資料庫文件拷貝移動會因為文件的屬組問題而產生這個錯誤。
解決方法:
1、修復數據表
可以使用下面的兩種方式修復數據表:(第一種方法僅適合獨立主機用戶)
1)使用 myisamchk ,MySQL 自帶了專門用戶數據表檢查和修復的工具 —— myisamchk 。更改當前目錄到 MySQL/bin 下面,一般情況下只有在這個下面才能運行 myisamchk 命令。常用的修復命令為:myisamchk -r 數據文件目錄/數據表名.MYI;
2)通過 phpMyAdmin 修復, phpMyAdmin 帶有修復數據表的功能,進入到某一個表中後,點擊「操作」,在下方的「表維護」中點擊「修復表」即可。
注意:以上兩種修復方式在執行前一定要備份資料庫。

Ⅹ mysql優化的常用方法有哪些

1.對查詢進行優化,應盡量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。

2.應盡量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃描。

3.應盡量避免在 where 子句中對欄位進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描,如:
select id from t where num is null
可以在num上設置默認值0,確保表中num列沒有null值,然後這樣查詢:
select id from t where num=0

4.應盡量避免在 where 子句中使用 or 來連接條件,否則將導致引擎放棄使用索引而進行全表掃描,如:
select id from t where num=10 or num=20
可以這樣查詢:
select id from t where num=10
union all
select id from t where num=20

5.下面的查詢也將導致全表掃描:
select id from t where name like '%abc%'
若要提高效率,可以考慮全文檢索。

6.in 和 not in 也要慎用,否則會導致全表掃描,如:
select id from t where num in(1,2,3)
對於連續的數值,能用 between 就不要用 in 了:
select id from t where num between 1 and 3

7.如果在 where 子句中使用參數,也會導致全表掃描。因為SQL只有在運行時才會解析局部變數,但優化程序不能將訪問計劃的選擇推遲到運行時;它必須在編譯時進行選擇。然而,如果在編譯時建立訪問計劃,變數的值還是未知的,因而無法作為索引選擇的輸入項。如下面語句將進行全表掃描:
select id from t where num=@num
可以改為強制查詢使用索引:
select id from t with(index(索引名)) where num=@num

8.應盡量避免在 where 子句中對欄位進行表達式操作,這將導致引擎放棄使用索引而進行全表掃描。如:
select id from t where num/2=100
應改為:
select id from t where num=100*2

9.應盡量避免在where子句中對欄位進行函數操作,這將導致引擎放棄使用索引而進行全表掃描。如:
select id from t where substring(name,1,3)='abc'--name以abc開頭的id
select id from t where datediff(day,createdate,'2005-11-30')=0--'2005-11-30'生成的id
應改為:
select id from t where name like 'abc%'
select id from t where createdate>='2005-11-30' and createdate<'2005-12-1'

10.不要在 where 子句中的「=」左邊進行函數、算術運算或其他表達式運算,否則系統將可能無法正確使用索引。

11.在使用索引欄位作為條件時,如果該索引是復合索引,那麼必須使用到該索引中的第一個欄位作為條件時才能保證系統使用該索引,否則該索引將不會被使用,並且應盡可能的讓欄位順序與索引順序相一致。

12.不要寫一些沒有意義的查詢,如需要生成一個空表結構:
select col1,col2 into #t from t where 1=0
這類代碼不會返回任何結果集,但是會消耗系統資源的,應改成這樣:
create table #t(...)

13.很多時候用 exists 代替 in 是一個好的選擇:
select num from a where num in(select num from b)
用下面的語句替換:
select num from a where exists(select 1 from b where num=a.num)

14.並不是所有索引對查詢都有效,SQL是根據表中數據來進行查詢優化的,當索引列有大量數據重復時,SQL查詢可能不會去利用索引,如一表中有欄位sex,male、female幾乎各一半,那麼即使在sex上建了索引也對查詢效率起不了作用。

15.索引並不是越多越好,索引固然可以提高相應的 select 的效率,但同時也降低了 insert 及 update 的效率,因為 insert 或 update 時有可能會重建索引,所以怎樣建索引需要慎重考慮,視具體情況而定。一個表的索引數最好不要超過6個,若太多則應考慮一些不常使用到的列上建的索引是否有必要。

閱讀全文

與mysql常用方法相關的資料

熱點內容
治療hpv有什麼好方法嗎 瀏覽:952
方差分析數據變換方法 瀏覽:65
和田玉籽料玉器鑒別方法 瀏覽:381
導線計算方法 瀏覽:319
票房的計算方法 瀏覽:570
少兒象棋教學方法探討 瀏覽:891
口腔黏液囊腫治療方法 瀏覽:412
什麼是密度測量方法 瀏覽:588
衛生間做防水的正確方法 瀏覽:549
快速認識圈子的方法 瀏覽:255
前臂肌肉鍛煉方法 瀏覽:626
爆炸掛鉤正確掛餌方法 瀏覽:159
兒童過敏了起包怎麼辦最快方法 瀏覽:547
避之寶的使用方法 瀏覽:1004
hvlp噴槍使用方法 瀏覽:268
狗吃糖果的正確方法 瀏覽:495
阻力對物體運動的實驗研究方法 瀏覽:474
生肖位數的計算方法 瀏覽:173
手足蠟膜使用方法 瀏覽:455
宇宙直徑計算方法 瀏覽:681