/usr/bin/mysqladmin -u root password 'new-password'其實,在上圖安裝主要套件完成時,會執行 mysql_install_db 的指令,幫 MySQL Server 建立相關的資料庫與資料表,建立完成後才提醒使用者記得變更管理者密碼(注意:此 root 密碼與 Linux 系統的管理帳戶 root 不同)。
/usr/bin/mysqladmin -u root -h Linux.indicator-online.net password 'new-password'
/etc/init.d/mysql start[img=12,12]mhtml:file://Q:\01_教務處\01E_資訊組\_伺服器安裝\Discuz\安裝技術文件\MySQL基本操作.mht![/img] 以工作端程式來連接 MySQL Server
mysql -h <hostname> -u <username> -p<password>實際舉例:
mysql -h localhost -u root -p123456其中 -h localhost 若是在本機端則不需要填寫,當然如果是以 root 身分且沒有設定密碼, 則可使用 mysql 指令即可進入,在次提醒各位 MySQL 內部的使用者帳戶,與 Linux 系統的使用者是分開的, 預設的 MySQL 最高權限的管理員是 root,其密碼是沒有設定的。
[img=15,15]mhtml:file://Q:\01_教務處\01E_資訊組\_伺服器安裝\Discuz\安裝技術文件\MySQL基本操作.mht!x-usc:[/img] 啟用工作端連結 mysql[img=12,12]mhtml:file://Q:\01_教務處\01E_資訊組\_伺服器安裝\Discuz\安裝技術文件\MySQL基本操作.mht![/img] 使用者的建立
[img=15,15]mhtml:file://Q:\01_教務處\01E_資訊組\_伺服器安裝\Discuz\安裝技術文件\MySQL基本操作.mht![/img] 查詢顯示資料庫 show databases;
[img=15,15]mhtml:file://Q:\01_教務處\01E_資訊組\_伺服器安裝\Discuz\安裝技術文件\MySQL基本操作.mht![/img] 開始指定資料庫 use <database name>
[img=15,15]mhtml:file://Q:\01_教務處\01E_資訊組\_伺服器安裝\Discuz\安裝技術文件\MySQL基本操作.mht![/img] 查詢顯示工作表 show tables;
[img=15,15]mhtml:file://Q:\01_教務處\01E_資訊組\_伺服器安裝\Discuz\安裝技術文件\MySQL基本操作.mht![/img] 查詢工作表欄位 show colums from <table name> from <database>;
[img=15,15]mhtml:file://Q:\01_教務處\01E_資訊組\_伺服器安裝\Discuz\安裝技術文件\MySQL基本操作.mht![/img] 離開工作端程式 \q 或 quit 或 exit
GRANT ALL PRIVILEGES ON *.* TO sqluser@localhost IDENTIFIED BY 'something' WITH GRANT OPTION;在指令中 sqluser 後面@符號後加上指定的主機名稱或網域名稱即變成遠端的使用者,如:
GRANT ALL PRIVILEGES ON *.* TO sqluser@tgic.idv.tw IDENTIFIED BY 'something' WITH GRANT OPTION;不過您也不確定使用者從那一部機器連接, 所以您可以使用 "%" 符號來指定 MySQL 接受 sqluser 使用者從不同的主機連接進來。
GRANT ALL PRIVILEGES ON *.* TO sqluser@"%" IDENTIFIED BY 'something' WITH GRANT OPTION;當然我們希望各位在做練習時,可以為 root 建立一個遠端的使用者。
GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY 'something' WITH GRANT OPTION;不管您是建立什麼樣的名稱,請在建立後更改密碼:
SET PASSWORD FOR sqluser@"%"=PASSWORD('123456');
SET PASSWORD FOR root@"%"=PASSWORD('123456');
簡單的說,任何的伺服器登必須經過身分的認證後,才能使用其所提供的資源,MySQL 工作端的登入大致可分成本機端的使用者登入與遠端的使用者登入,例如 root 這個 MySQL 的帳號,預設值可是只能在本機端登入唷!
它無法從 本機以外 的工作端程式透過Internet連結登入,您必須在本機端再建立一個遠端登入的root使用者帳戶,本機以外的工作端程式才能夠順利登入。
在這裡我們要來看看登工作端連接到MySQL伺服器時,進行了那些動作?
不管您是在本機端以 mysql 指令連接或是從其他的程式連接,基本上MySQL會進行兩個階段的檢查工作:
[img=15,15]mhtml:file://Q:\01_教務處\01E_資訊組\_伺服器安裝\Discuz\安裝技術文件\MySQL基本操作.mht!x-usc:[/img] 確認是否允許連線:這當然就是要檢查您登入時所使用的帳戶以及密碼,還有您是在本機端登入還是從遠端登入?[img=12,12]mhtml:file://Q:\01_教務處\01E_資訊組\_伺服器安裝\Discuz\安裝技術文件\MySQL基本操作.mht![/img] mysql 資料庫內的五大表單
[img=15,15]mhtml:file://Q:\01_教務處\01E_資訊組\_伺服器安裝\Discuz\安裝技術文件\MySQL基本操作.mht![/img] 檢查登入後下達指令的權限:例如您下達create database sb;指令時,MySQL會根據mysql資料庫內的資料,來判定是否指令可以被執行。
一切都 OK 後,我們來研究一下當建立使用者後,這些資料存放到那裡去了?
前面提及 MySQL 內建的兩個資料庫,一個是 mysql 一個是 test,test 是空的資料庫提供給各位測試練習,而 mysql 資料庫內則是存放著 MySQL 各項使用者與資料庫權限資料。mysql 資料庫內有六個表單,其中五個是我們在管理使用者與資料庫時會用到的,user、db、host、Tables_priv、Colums_priv。[img=15,15]mhtml:file://Q:\01_教務處\01E_資訊組\_伺服器安裝\Discuz\安裝技術文件\MySQL基本操作.mht![/img] user:存放資料苦使用者的使用權限。前面在建立使用者時,我們令所建立的使用者具有 ALL 所有的權限(包含所有的資料庫),各位往後在做管理時,切記不該如此來建立使用者(除非建立的是管理者帳號)。一般在管理權限時,是針對資料庫及表單來進行權限的授與,例如我們建立了一個叫做 News,內有 Books、Bookstores 等表單,您必須為使用者指令對該資料庫或表單的權限:
[img=15,15]mhtml:file://Q:\01_教務處\01E_資訊組\_伺服器安裝\Discuz\安裝技術文件\MySQL基本操作.mht![/img] db:存放資料庫的使用權限紀錄。
[img=15,15]mhtml:file://Q:\01_教務處\01E_資訊組\_伺服器安裝\Discuz\安裝技術文件\MySQL基本操作.mht![/img] host:存放連接的來源主機對資料庫的使用權限。
[img=15,15]mhtml:file://Q:\01_教務處\01E_資訊組\_伺服器安裝\Discuz\安裝技術文件\MySQL基本操作.mht![/img] Tables_priv:存放各表單的使用權限。
[img=15,15]mhtml:file://Q:\01_教務處\01E_資訊組\_伺服器安裝\Discuz\安裝技術文件\MySQL基本操作.mht![/img] Colums_priv:存放資料表內的欄位使用權限。
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON News.* TO NewUser@"%" IDENTIFIED BY '123456';上述指令指定了六種權限(SELECT,INSERT,UPDATE,DELETE,CREATE,DROP)給一個 NewUser@"%",而 News.* 是指在 News 資料庫下所有的資料表。如此便可建立 NewUser 對 News 資料庫內所有的表單有查詢、新增、更新、刪除、建立表單、刪除表單等權限。 [img=12,12]mhtml:file://Q:\01_教務處\01E_資訊組\_伺服器安裝\Discuz\安裝技術文件\MySQL基本操作.mht![/img] 建立資料庫與資料表 前面提及了一些 MySQL 的管理操作,接下來我們要來談及資料庫建立及表單建立。
同樣的,資料庫的建立可以使用 mysqladmin 或是直接進入 Client 程式 mysql 來建立:# mysqladmin create sb <=建立以 sb 為名的資料庫sb 資料庫建立後,會在/var/lib/mysql目錄下建立一個sb目錄,接下來的工作就是在該資料庫內建立資料表:
# mysql
mysql> create database sb;
mysql> use sb如此books的表單即便建立了(內有 b_no、b_name、price 三欄位),各位可以使用前面提到的 show 指令查看:
mysql> create table books (b_no char(5) not null, b_name char(20), price int, primary key(b_no));
mysql> show columns from books from sb;
建立表單是不是很簡單呢?搞清楚要建立的欄位,然後以正確的指令操作。
知道了如何建立表單,也要瞭解如何刪除以建立的表單,各位可以使用 drop 的指令來刪除表單或資料庫:
mysql> drop table books; <=刪除表單當然您可以使用像是 alter 來變更表單結構(詳細操作指令可參考相關 SQL 書籍)。
mysql> drop database sb; <=刪除資料庫
有了表單後,各位必須將資料輸入表單內,就是使用insert into的指令:
mysql> insert into books values ('00001','水滸傳',350);有了資料後,可以使用 select 資料庫控制語言指令來查詢表單內的資料:
mysql> insert into books (b_no,b_name,price) values ('00002','三國演義',400);
mysql> select * from books;
MySQL 與 PHP
至於對資料庫的存取,PHP提供了許多存取的函數可以讓網頁編輯者使用,同樣的透過PHP網頁與MySQL連接也必須要先經過身分與權限的認證。以下是PHP提供的函數:
mysql_connect($host, $user, $password); 建立與MySQL伺服器的連接實例
令 $link=mysql_connect($host, $user, $password)
mysql_create_db("db_name", $link); 建立資料庫
mysql_drop_db("db_name", $link); 刪除資料庫
mysql_select_db("db_name", $link); 開啟資料庫(like use in mysql client)
mysql_query($query_string, $link); 查詢資料
mysql_db_query($database, $query_string, [$link]) 到指定的資料庫查詢
<?php
$hostname = "localhost";
$user = "root";
$pass = "";
$DB = "postoffice";
if($link = mysql_connect($host, $user, $pass))
{
echo("連接MySQL成功<BR>\n");
}
else
{
echo("連接MySQL失敗<BR>\n");
}
if(mysql_select_db($DB, $link))
{
echo("開啟DB成功<BR>\n");
}
else
{
echo("開啟DB失敗<BR>\n");
}
if(mysql_query("select * from mails", $link))
{
$query = mysql_query("select * from mails", $link);
$num=mysql_num_rows($query);
for($i=0;$i<$num;$i++);
{
$re=mysql_fetch_array($query);
echo $re[no];
echo ("<BR>\n");
echo $re[internal_mail];
echo ("<BR>\n");
echo $re[internal_price];
}
}
else
{
echo("查詢??<BR>\n");
}
?>
歡迎光臨 蘭庭論壇 (http://120.101.203.2/) | Powered by Discuz! X3.2 |