BÔ GIAO DUC VA ĐAO TAO
TRƯỜNG ĐAI HỌC MỎ - ĐỊA CHẤT
MÃ NGUỒN MỞ CHUYÊN
NGANHĐề tài: TÌM HIỂU VA TRIỂN KHAI MySQL
SERVER TRÊN LINUX SERVER
Giảng Viên: Phạm Đình Tân
SV thực hiện: MSSV:
Lê Công Tuấn Anh 1021050001
Trần Văn Mạnh 1021050060
Dương Tiến Dũng 1021050017
Trần Tiến Đạt 1021050023
Ha nôi, thang 04 năm 2014
MUC LUC
MỤC LỤC................................................................................................................2
LỜI NÓI ĐẦU..........................................................................................................4
Phần 1: Tổng quan về MySQL................................................................................5
1.1. MySQL.....................................................................................................5
1.1.1. Tính linh hoạt.......................................................................................5
1.1.2. Tính thực thi cao...................................................................................6
1.1.3. Có thể sử dụng ngay.............................................................................6
1.1.4. Hỗ trợ giao dịch mạnh..........................................................................6
1.1.5. Nơi lưu trữ Web và Data đáng tin cậy.................................................7
1.1.6. Chế độ bảo mật dữ liệu mạnh...............................................................7
1.1.7. Sự phát triển ứng dụng hỗn hợp...........................................................7
1.1.8. Dễ dàng quản lý....................................................................................8
1.1.9. Mã nguồn mở.......................................................................................8
1.1.10. Chi phí thấp........................................................................................8
1.2. PHP Làm việc cùng MySQL...................................................................9
1.2.1. Định nghĩa cơ bản................................................................................9
1.2.2. Cài đặt MySQL....................................................................................9
1.3. Cấu trúc của một cơ sở dữ liệu...............................................................21
1.3.1. Định nghĩa cơ bản..............................................................................21
1.3.2. Các kiểu dữ liệu cơ bản......................................................................22
1.3.3. Kết nối vào MySQL Server................................................................26
1.4. Các thao tác bằng dòng lệnh trên MySQL..............................................26
1.4.1. Các thao tác trên Database....................................................................26
1.4.2. Các thao tác trên bảng..........................................................................35
2
1.4.3. Các thao tác các trường......................................................................38
1.5. Liên kết mysql và PHP chúng ta cần nắm 6 hàm cơ bản:...........................43
1.5.1. Lựa chọn cơ sở dữ liệu:........................................................................43
1.5.2. Thực thi câu lệnh truy vấn:...................................................................43
1.5.3. Đếm số dòng dữ liệu trong bảng:........................................................44
1.5.4. Lấy dữ liệu từ bảng đưa vào mảng:.....................................................44
1.5.5. Đóng kết nối cơ sở dữ liệu:..................................................................44
1.5.6. Tạo cơ sở dữ liệu dựa trên từng đoạn code sau:...................................44
Phần 2: PHP MYADMIN và MySQL Client.........................................................48
2.1. Thao tác trên Phpmyadmin:.........................................................................48
2.1.1. Tạo Database (CSDL – Cơ Sở Dữ Liệu)............................................48
2.1.2. Tạo Bảng (table)...................................................................................49
2.1.3. Thêm dữ liệu vào Bảng (table).............................................................51
2.1.4. Sửa và Xóa dữ liệu trong Bảng (table)................................................52
2.1.5. Sửa cấu trúc Table (bảng):....................................................................53
2.1.6. Đổi tên Bảng (table)..............................................................................53
2.1.7. Xóa Bảng (table)...................................................................................54
2.2. Sử dụng MySQL Client để kết nối với MySQL server..........................54
2.2.1. Tạo kết nối với MySQL server...........................................................55
2.2.2. Thao tác tạo database.........................................................................56
2.2.3. Tạo bảng.............................................................................................57
2.2.4. Sửa cấu trúc bảng...............................................................................58
2.2.5. Xóa bảng............................................................................................59
2.2.6. Đổi tên bảng.......................................................................................59
2.2.7. Xóa database......................................................................................60
KẾT LUẬN............................................................................................................61
3
LỜI NÓI ĐẦU
Trong giới hạn đề tài của BTL lần này chúng em xin phép được gửi đến thầy và
các bạn cuốn tài liệu nói chi tiết về việc Tìm hiểu và triển khai MySQL Server trên Linux
Mong rằng cuốn tài liệu này của chúng em sẽ giúp ích được cho những người
muốn tìm hiểu về lĩnh vực nêu trên.
Cuối cùng em xin cảm ơn sự giúp đỡ của thầy Phạm Đình Tân để nhóm chúng em
hoàn thiện cuốn tài liệu này. Em xin cảm ơn thầy!
Ha nôi 01/11/2014
Nhóm 01
4
Phần 1: Tổng quan về MySQL
1.1. MySQL
MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và
được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì MySQL là
cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều
hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh. Với tốc độ và tính
bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet.
MySQL miễn phí hoàn toàn cho nên bạn có thể tải về MySQL từ trang chủ. Nó có nhiều
phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành
dòng Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI
Irix, Solaris,SunOS,...
MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan hệ
sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL).
MySQL được sử dụng cho việc bổ trợ PHP, Perl, và nhiều ngôn ngữ khác, nó làm
nơi lưu trữ những thông tin trên các trang web viết bằng PHP hay Perl,...
5
1.1.1. Tính linh hoạt
Máy chủ cơ sở dữ liệu MySQL cung cấp đặc tính linh hoạt, có sức chứa để xử lý
các ứng dụng được nhúng sâu với dung lượng chỉ 1MB để chạy các kho dữ liệu đồ sộ lên
đến hàng terabytes thông tin. Sự linh hoạt về flatform là một đặc tính lớn của MySQL với
tất cả các phiên bản của Linux, Unix, và Windows đang được hỗ trợ. Và dĩ nhiên, tính
chất mã nguồn mở của MySQL cho phép sự tùy biến hoàn toàn theo ý muốn để thêm vào
các yêu cầu thích hợp cho database server.
1.1.2. Tính thực thi cao
Kiến trúc storage-engine cho phép các chuyên gia cơ sở dữ liệu cấu hình máy chủ
cơ sở dữ liệu MySQL đặc trưng cho các ứng dụng đặc thù. Dù ứng dụng là một hệ thống
xử lý giao dịch tốc độ cao hay web site dung lượng lớn phục vụ hàng triệu yêu cầu mỗi
ngày, MySQL có thể đáp ứng khả năng xử lý những đòi hỏi khắt khe nhất của bất kì hệ
thống nào. Với các tiện ích tải tốc độ cao, đặc biệt bộ nhớ caches, và các cơ chế xử lý
nâng cao khác, MySQL đưa ra tất cả các vũ khí cần phải có cho các hệ thống doanh
nghiệp khó tính ngày nay.
1.1.3. Có thể sử dụng ngay
Sự đáng tin cậy cao và tính “mì ăn liền” là những tiêu chuẩn đảm bảo của
MySQL. MySQL đưa ra nhiều tùy chọn có thể dùng ngay từ cấu hình tái tạo chủ/tớ tốc
độ cao, để các nhà phân phối thứ 3 đưa ra những giải pháp có thể dùng ngay duy nhất cho
server cơ sở dữ liệu MySQL.
1.1.4. Hỗ trợ giao dịch mạnh
MySQL đưa ra một trong số những engine giao dịch cơ sở dữ liệu mạnh nhất trên
thị trường. Các đặc trưng bao gồm hỗ trợ giao dịch ACID hoàn thiện ( Atomic – tự động,
Consistent – thống nhất, Isolated – độc lập, Durable – bền vững), khóa mức dòng không
hạn chế, khả năng giao dịch được phân loại, và hỗ trợ giao dịch đa dạng (multi-version)
mà người đọc không bao giờ gây trở ngại cho người viết và ngược lại. Tính toàn vẹn của
6
dữ liệu cũng phải được bảo đảm trong suốt quá trình server có hiệu lực, các mức giao
dịch độc lập được chuyên môn hóa, và phát hiện khóa chết ngay lập tức.
1.1.5. Nơi lưu trữ Web và Data đáng tin cậy
MySQL là nhà máy chuẩn cho các web sites phải trao đổi thường xuyên vì nó có
engine xử lý tốc độ cao, khả năng chèn dữ liệu nhanh ghê gớm, và hỗ trợ mạnh cho các
chức năng chuyên dụng của web như tìm kiếm văn bản nhanh. Những tính năng này cũng
được áp dụng cho môi trường lưu trữ dữ liệu mà MySQL tăng cường đến hàng terabyte
cho các server đơn. Các tính năng khác như bảng nhớ chính, cây B và chỉ số băm, và
bảng lưu trữ đã được cô lại để giảm các yêu cầu lưu trữ đến 80% làm cho MySQL trở
thành lựa chọn tốt nhất cho cả ứng dụng web và các ứng dụng doanh nghiệp.
1.1.6. Chế độ bảo mật dữ liệu mạnh
Vì bảo mật dữ liệu cho một công ty là công việc số một của các chuyên gia về cơ
sở dữ liệu, MySQL đưa ra tính năng bảo mật đặc biệt chắc chắn dữ liệu sẽ được bảo mật
tuyệt đối. Trong việc xác nhận truy cập cơ sở dữ liệu, MySQL cung cấp các kĩ thuật
mạnh mà chắc chắn chỉ có người sử dụng đã được xác nhận mới có thể truy nhập được
vào server cơ sở dữ liệu, với khả năng này để chặn người dùng ngay từ mức máy khách là
điều có thể làm được. SSH và SSL cũng được hỗ trợ để chắc chắn các kết nối được an
toàn và bảo mật. Một đối tượng framework đặc quyền được đưa ra mà người sử dụng chỉ
có thể nhìn thấy dữ liệu, các hàm mã hóa và giải mã dữ liệu mạnh chắc chắn rằng dữ liệu
sẽ được bảo mật. Cuối cùng, tiện ích backup và recovery cung cấp bởi MySQL và các
hãng phần mềm thứ 3 cho phép backup logic và vật lý hoàn thiện cũng như recovery toàn
bộ hoặc tại một thời điểm nào đó.
1.1.7. Sự phát triển ứng dụng hỗn hợp
Một trong số các lý do khiến cho MySQL là cơ sở dữ liệu mã nguồn mở phổ biến
nhất thế giới là nó cung cấp hỗ trợ hỗn hợp cho bất kì sự phát triển ứng dụng nào cần.
Trong cơ sở dữ liệu, hỗ trợ có thể được tìm thấy trong các stored procedure, trigger,
function, view, cursor, ANSI-standard SQL, và nhiều nữa. Với các ứng dụng nhúng, thư
7
viện plug-in có sẵn để nhúng vào cơ sở dữ liệu MySQL hỗ trợ trong bất kì ứng dụng nào.
MySQL cũng cung cấp các bộ kết nối như: ODBC, JDBC, … để cho phép tất cả các form
của ứng dụng sử dụng MySQL như một server quản lí dữ liệu được ưu tiên.
1.1.8. Dễ dàng quản lý
MySQL trình diễn khả năng cài đặt nhanh đặc biệt với thời gian ở mức trung bình
từ lúc download phần mềm đến khi cài đặt hoàn thành chỉ mất chưa đầy 15 phút. Điều
này đúng cho dù flatform là Microsoft Windows, Linux, Macintosh hay Unix. Khi đã
được cài đặt, tính năng tự quản lý như tự động mở rộng không gian, tự khởi động lại, và
cấu hình động sẵn sàng cho người quản trị cơ sở dữ liệu làm việc. MySQL cũng cung cấp
một bộ hoàn thiện các công cụ quản lý đồ họa cho phép một DBA quản lý, sửa chữa, và
điều khiển hoạt động của nhiều server MySQL từ một máy trạm đơn. Nhiều công cụ của
các hãng phần mềm thứ 3 cũng có sẵn trong MySQL để điều khiển các tác vụ từ thiết kế
dữ liệu và ETL, đến việc quản trị cơ sở dữ liệu hoàn thiện, quản lý công việc, và thực
hiện kiểm tra.
1.1.9. Mã nguồn mở
Nhiều công ty lưỡng lự trong việc giao phó toàn bộ cho phần mềm mã nguồn mở
vì họ tin họ không thể tìm được một cách hỗ trợ hay mạng lưới an toàn phục vụ chuyên
nghiệp, hiện tại, họ tin vào phần mềm có bản quyền để chắc chắn về sự thành công toàn
diện cho các ứng dụng chủ chốt của họ. Những lo lắng của họ có thể được dẹp bỏ với
MySQL, sự bồi thường là có trong mạng lưới MySQL.
1.1.10. Chi phí thấp
Bằng cách sử dụng MySQL cho các dự án phát triển mới, các công ty đang thấy rõ
việc tiết kiệm chi phí. Được hoàn thành thông qua sử dụng server cơ sở dữ liệu MySQL
và kiến trúc scale-out, các doanh nghiệp đã tìm ra cái mà họ có thể đạt được ở mức ngạc
nhiên về khả năng xử lý. Thêm vào đó, tính tin cậy và dễ duy trì của MySQL ở mức trung
bình mà người quản trị cơ sở dữ liệu không phải mất nhiều thời gian sửa chữa hay vấn đề
thời gian chết
8
1.2. PHP Làm việc cùng MySQL
1.2.1. Định nghĩa cơ bản
Trong BTL lần này chúng ta sẽ tìm hiểu về MySQL được làm việc trên nền web
với PHP.
MySQL là hệ quản trị dữ liệu miễn phí, được tích hợp sử dụng chung với apache,
PHP. Chính yếu tố phát triển trong cộng đồng mã nguồn mở nên MySQL đã qua rất
nhiều sự hỗ trợ của những lập trình viên yêu thích mã nguồn mở. MySQL cũng có cùng
một cách truy xuất và mã lệnh tương tự với ngôn ngữ SQL. Nhưng MySQL không bao
quát toàn bộ những câu truy vấn cao cấp như SQL.
Về bản chất MySQL chỉ đáp ứng việc truy xuất đơn giản trong quá trình vận hành
của website nhưng hầu hết có thể giải quyết các bài toán trong PHP
1.2.2. Cài đặt MySQL
Đầu tiên chúng ta sử dụng lệnh sau để cài đặt MySQL 5:
create database quanlysinhvien;
Sudo apt-get install mysql-server mysql-client
9
10
Đến đây ta đã có thể làm việc với MySQL qua công cụ dòng lệnh
Trong tài liệu này có sử dụng công cụ PHP MyAdmin để làm việc với MySQL
Sau đây là phần triển khai cài đặt
Cài đặt Apache2
Bước 1 : Chuyển sang quyền root
sudo su
11
Nhập mật khẩu -> Enter
Bước 2 : Cập nhật các Repository:
apt-get update
Bước 3 : Cài đặt apache2 bằng lệnh
sudo apt-get install apache2
12
13
Gõ "Y" rồi Enter
Quá trình cài đặt sẽ diễn ra trong ít phút
14
sau khi hoàn tất,mở bất kỳ trình duyệt nào và gõ vào địa chỉ IP server . Ví
dụ http://192.168.1.80
15
Cài đặt PHP5
Gõ y rồi Enter
Cài đặt phpMyAdmin bằng lệnh
apt-get install phpmyadmin
16
17
Gõ y rồi Enter
Quá trình download package sẽ diễn ra trong ít phút. Cho đến khi hiện ra màn
hình lựa chọn web server đang sử dụng.
18
Chọn apache2 nếu bạn cài đặt apache2, rồi chọn Ok. Để di chuyển giữa các lựa
chọn sử dụng phím Tab, để xác nhận lựa chọn di duyển màu đỏ đến vị trí cần và gõ phím
Space (phím cách)
Bạn nên chọn <NO> nếu không quá am hiểu về hệ thống.
19
Cho đến khi màn hình như sau là đã hoàn tất.
sau khi hoàn tất,mở bất kỳ trình duyệt nào và gõ vào địa chỉ IP
server/phpmyadmin . Ví dụ http://192.168.1.80
20
1.3. Cấu trúc của một cơ sở dữ liệu
1.3.1. Định nghĩa cơ bản
Định nghĩa cơ sở dữ liệu bảng, cột
Cơ sở dữ liệu: là tên của cơ sở dữ liệu chúng ta muốn sử dụng
Bảng: Là 1 bảng giá trị nằm trong cơ sở dữ liệu.
Bảng là nơi lưu trữ dữ liệu. Trước khi thực hiện truy vấn và sử dụng dữ liệu, thì
nhiệm vụ đầu tiên là phải lưu trữ nó.
Bảng có thể chứa dữ liệu về các đối tượng thông tin như HÀNG HÓA, NHÂN
VIÊN…. Mỗi dòng (row) của bảng chứa một thể hiện riêng của đối tượng nào đó. Ví dụ
thông tin về một hàng hóa, thông tin về một nhân viên…. Dòng được thành lập từ các cột
(column), mỗi cột là một thông tin về đối tượng được lưu trữ trong bản. Ví dụ trong bảng
NHANVIEN chúng ta có các field như sau: Field MaNV(mã nhân viên), field HoNV (họ
và chữ lót), field TenNV (tên), field Nu (nam/nữ), field NgaySinh (ngày sinh)…..
21
Cột là 1 giá trị nằm trong bảng. Dùng để lưu trữ các trường dữ liệu.
Thuộc tính
Ví dụ:
Sinhvien
MSSV 1021050001
Hovaten Le Cong Tuan Anh
Ngaysinh 20/10/1992
Email [email protected]
Diachi Trieu Son – Thanh Hoa
Như vậy ta có thể hiểu như sau:
1 cơ sở dữ liệu có thể bao gồm nhiều bảng.
1 bảng có thể bao gồm nhiều cột
1 cột có thể có hoặc không có những thuộc tính.
1.3.2. Các kiểu dữ liệu cơ bản
MySQL cung cấp các kiểu dữ liệu sau :
1.3.2.1. Kiểu dữ liệu số (numeric)
Tên kiểu(type name)
Bộ nhớ(memory space)
bytes
Vùng giá trị(value range)
Vùng giá trị dương(Unsigned)
Tinyint 1 -128 ÷ 172 0 ÷ 255Smallint 2 -32768 ÷ 32767 0 ÷ 65535
Mediumint 3 -8388608 ÷8388607 0 0 ÷ 16777215
Int4 2147483648
÷2147483647
0 ÷ 4294967295
Bigint8 -
92233720368547758080 ÷
18446744073709550
22
÷9223372036854775807
615
Float (M,D) 4Double (M,D) 8Decimal (M,D) M+2
1.3.2.2. Kiểu chuỗi kí tự (string)
ên kiểu Kích thước tối đa(bytes)
Khoảng lưu trữ(bytes)
Char(x) 255 XVarchar(x) 255 X+1
Tinytext 255 X+1Tinyblob 255 X+2
Text 65535 X+2Blob 65535 X+2
Mediumtext 1.6 MB X + 3Mediumblog 1.6 MB X + 3
Longtext 4.2 MB X + 4Longblob 4.2 MB X + 4
1.3.2.3. Kiểu hỗn hợp (Miscellaneous)
Enum : kiểu dữ liệu liệt kê, cho phép định nghĩa trước các giá trị cho một cột, cột
sẽ chỉ lưu trữ một trong các giá trị định sẵn đó.
Vd :
CREATE TABLE Test(
Return ENUM('Y','N') DEFAULT 'N',
Size ENUM('S','M','L','XL','XXL'),
Color ENUM('Black','Red','White')
)
Set : kiểu dữ liệu liệt kê, tương tự enum nhưng cho phép cột lưu trữ nhiều giá trị
trong các giá trị định sẵn, mỗi giá trị cách nhau bởi dấu ', '
Vd :
CREATE Table Test(
Advertiser SET('Web Page','Television','Newspaper')
23
)
1.3.2.4. Kiểu ngày giờ
Tên kiểu Định dạng chuẩn Giá trị 0DATETIME YYYY-MM-DD
HH:MM:SS0000-00-00
00:00:00DATE YYYY-MM-DD 0000-00-00TIME HH:MM:SS HH:MM:SSYEAR YEAR 0000
TIMESTAMP (có nhiều giá trị) 00000000000000
Định dạng kiểu TIMESTAMP
Tên kiểu Định dạngTIMESTAMP(14) YYYYMMDDHHMMS
STIMESTAMP(12) YYMMDDHHMMSSTIMESTAMP(10) YYMMDDHHMMTIMESTAMP(8) YYYYMMDDTIMESTAMP(6) YYMMDDTIMESTAMP(4) YYMMTIMESTAMP(2) YY
1.3.2.5. Các từ khoá định nghĩa cột (modifiers)
Từ khoá Kiểu dữ liệuthích hợp
Ý nghĩa
Auto_Increment
Int Tự động tăng dữ liệu của cột
Binary Char, Varchar Thiết lập lưu trữ chuỗi nhị phân(phân biệt chữ hoa – thường)
Default Tất cảtrừ text, blob
Thiết lập giá trị mặc định cho cộ
Not null Tất cả Không cho phép để giá trị nullNull Tất cả Cho phép để giá trị null
Primary key
Tất cả Thiết khoá chính cho cột
Unique Tất cả Giá trị duy nhấtUnsigned Kiểu numeric Chỉ lưu giá trị số nguyênZerofill Kiểu numeric Điền giá trị 0 cho đủ chiều dài số
24
1.3.2.6. Định nghĩa một số thuật ngữ
NULL : Giá trị cho phép rỗng.
AUTO_INCREMENT : Cho phép giá trị tăng dần (tự động).
UNSIGNED : Phải là số nguyên dương
PRIMARY KEY : Cho phép nó là khóa chính trong bảng.
1.3.2.7. Các loại dữ liệu trong MySQL
Sau đây là một số kiểu dữ liệu thông dụng:
Kiểu dữ liệu Mô tả
Integers (số nguyên) Bigint: khoảng giá trị từ -263 đến 263 -1 tức từ -9.223.372.036.854.775.808 đến 9.223.372.036.854.775,807.
Int: khoảng giá trị từ -231 đến 231 -1 tức từ -2.147.483.648 đến 2.147.483.647.
Smallint: khoảng giá trị từ -215 đến 215 tức từ -32.768 đến 32.767.
Tinyint: khoảng giá trị từ 0 đến 255.
Bit: chứa giá trị 0 hoặc 1.
Decimal và numeric (số
thập phân) Decimal: có giá t rị từ -1038 +1 đến 1038 -1. Numeric: tương đương sis decimal.
Money và
smallmoney (kiểu tiền tệ) Money: khoảng giá trị từ -263 đến 263 tức từ -
922.337.203.685.477,5808 922.337.203.685.477,5807. Smallmoney: khoảng giá trị từ -214.748,3648 đến
214.748,3647
25
Approximate Numerics Float: độ chính xác từ 1.79E + 308 đến 1.79E + 308.
Real: độ chính xác từ -3.40E + 38 đến 3.40E + 38.
datetime and smalldatetime
datetime: khoảng giá trị từ 1/1/1753 đến 31/12/9999.
smalldatetime: khoảng giá trị từ 1/1/1900 đến 6/6/2079.
Character Strings (kiểu chuỗi)
Char: không chứa Unicode, chiều dài tối đa là 8.000 ký tự.
Varchar: không chứa Unicode, chiều dài tối đa là 8.000 ký tự.
Text: không chứa Unicode, chiều dài tối đa là 231 -1 tương đương với 2.147.483.647 ký tự
Unicode Character Strings (kiểu chuỗi có chứa Unicode)
nchar: có chứa Unicode, chiều dài tối đa là 4.000 ký tự nvarchar: có chứa Unicode, chiều dài tối đa là 4.000 ký
tự ntext: có chứa Unicode, chiều dài tối đa là 230 – 1 tức
1.073.741.823 ký tự.
1.3.3. Kết nối vào MySQL Server
PHP cung cấp hàm mysql_connect để kết nối vèo MySQL server. Cú pháp của hàm này như sau:
mysql_connect($server_address, $username, $password)
1.4. Các thao tác bằng dòng lệnh trên MySQL
1.4.1. Các thao tác trên Database
Tạo database và user MySql bằng dòng lệnh trên Linux Terminal, cách thiết lập
quyền sử dụng cho user.
1.4.1.1. Đăng nhập vào MySql Server bằng lệnh sau
mysql -u root -p
Tạo database
26
1.4.1.2. Sau khi đăng nhập vào MySql Server bạn có thể tạo cơ sở dữ liệu bằng
lệnh sau
create database dbname;
1.4.1.3. Bây giờ chúng ta tạo một database mới có tên quanlysinhvien
create database quanlysinhvien;
1.4.1.4. Để sử dụng database ta vừa tạo ta sử dụng lệnh
use quanlysinhvien
1.4.1.5. Tiếp theo ta tạo bảng tbl_sinhvien.
CREATE TABLE tbl_sinhvien(
sinhvien_id int(10) NOT NULL AUTO_INCREMENT,
sinhvien_name varchar(50) NOT NULL,
sinhvien_email varchar(50) NULL,
sinhvien_address varchar(200) DEFAULT NULL,
sinhvien_phone int(10),
sinhvien_info text NULL,
PRIMARY KEY(sinhvien_id)
)ENGINE='innodb';
Xem cấu trúc của bảng
show columns from tbl_sinhvien
Kết quả như hình bên dưới
27
• Chọn một database:
- Chọn một database mà ta làm việc với chúng
Cú pháp: use tên_database;
• Xem bảng có trong database
Cú pháp: show tables;
• Xem các database hiện có
- Dùng để xem các database đang có trên server
Cú pháp:
show databases;
Hình minh họa
• Chọn một database:
- Chọn một database mà ta làm việc với chúng
Cú pháp:
use tên_database;
28
• Xem bảng có trong database
Cú pháp:
show tables;
3. Tạo user và thiết lập quyền cho user
Sử dụng lệnh sau để thiết lập đầy đủ các quyền cho một user
grant all on dbname.* to username@localhost;
Tất nhiên trong thực tế chắc chắn bạn cần giới hạn một số quyền của user, khi đó
hãy sử dụng lệnh sau
grant SELECT on dbname.* to username@localhost; // SELECT là quyền
Danh sách các quyền bạn có thể thiết lập cho user
ALL
ALTER
CREATE VIEW
CREATE
DELETE
DROP
GRANT OPTION
INDEX
INSERT
SELECT
SHOW VIEW
TRIGGER
UPDATE
Sau khi thiết lập các quyền cho user, bạn cần làm thêm một việc là thiết lập mật
khẩu cho user
29
set password for username@localhost = password('mat_khau');
- See more at: http://thuthuatvietnam.com/tao-database-va-user-mysql-bang-lenh-
terminal.html#sthash.HP3oSxZO.dpuf
Backup bằng Command Line (sử dụng mysqldump để backup database)
Để có thể sử dụng dòng lệnh sao lưu cơ sở dữ liệu ta cần đăng nhập vào server
thông qua kết nối ssh
Sử dụng cấu trúc lệnh như sau
$ mysqldump --opt -u [uname] -p [dbname] > [backupfile.sql]
Trong đó:
[uname] : user của database
[dbname] : Tên của database
[backupfile.sql] : Tên file backup muốn lưu
[--opt] : Các tùy chọn mysqldump
Ví dụ : Để backup database thuthuatvietnam
$ mysqldump -u root -p thuthuatvietnam > backup_ttvn.sql
Có thể tùy chọn các bảng để backup bằng cách liệt kê các bảng, các bảng cách
nhau bằng khoảng trắng (dấu space)
$ mysqldump -u root -p thuthuatvietnam bang_a bang_b > backup_ttvn.sql
Back up MySQL Database và đồng thời nén lại
Nếu database có dung lượng lớn, ta cần nén lại, khi đó có thể sử dụng cấu trúc
lệnh nén cùng gzip
$ mysqldump -u [uname] -p [dbname] | gzip -9 > [backupfile.sql.gz]
2. Restore MySQL Database
Ở trên là cách tạo bản backup, tiếp tục là cách restore. Cấu trúc lệnh như sau:
$ mysql -u [uname] -p [dbname] < [backupfile.sql]
30
Trong đó:
[uname] : user của database
[dbname] : Tên của database
[backupfile.sql] : Tên file backup đã lưu (file backup muốn phục hồi)
Ví dụ: Phục hồi database mangmaytinh
$ mysql -u root -p mangmaytinh < backup_ttvn.sql
Phục hồi database được nén
gunzip< [backupfile.sql.gz] | mysql -u [uname] -p [dbname]
Nếu muốn phục hồi một database đã tạo ra trước đó sử dụng lệnh mysqlimport.
Cấu trúc lệnh như sau:
mysqlimport -u [uname] -p [dbname] [backupfile.sql]
31
CREATE TABLE tbl_sinhvien(
sinhvien_id int(10) NOT NULL AUTO_INCREMENT,
sinhvien_name varchar(50) NOT NULL,
sinhvien_email varchar(50) NULL,
sinhvien_address varchar(200) DEFAULT NULL,
sinhvien_phone int(10),
sinhvien_info text NULL,
PRIMARY KEY(sinhvien_id)
)ENGINE='innodb';
Xem cấu trúc của bảng
show columns from tbl_sinhvien
Kết quả như hình bên dưới
• Chọn một database:
- Chọn một database mà ta làm việc với chúng
Cú pháp:
use tên_database;
• Xem bảng có trong database
Cú pháp:
32
show tables;
• Xem các database hiện có
- Dùng để xem các database đang có trên server
Cú pháp:
show databases;
Hình minh họa
• Chọn một database:
- Chọn một database mà ta làm việc với chúng
Cú pháp:
use tên_database;
• Xem bảng có trong database
Cú pháp:
show tables;
3. Tạo user và thiết lập quyền cho user
Sử dụng lệnh sau để thiết lập đầy đủ các quyền cho một user
grant all on dbname.* to username@localhost;
trong thực tế cần giới hạn một số quyền của user, khi đó hãy sử dụng lệnh sau
grant SELECT on dbname.* to username@localhost; // SELECT là quyền
Danh sách các quyền bạn có thể thiết lập cho user
ALL
33
ALTER
CREATE VIEW
CREATE
DELETE
DROP
GRANT OPTION
INDEX
INSERT
SELECT
SHOW VIEW
TRIGGER
UPDATE
Sau khi thiết lập các quyền cho user, bạn cần làm thêm một việc là thiết lập mật khẩu
cho user
set password for username@localhost = password('mat_khau');
Backup bằng Command Line (sử dụng mysqldump để backup database)
Để có thể sử dụng dòng lệnh sao lưu cơ sở dữ liệu ta cần đăng nhập vào server thông
qua kết nối ssh
Sử dụng cấu trúc lệnh như sau
$ mysqldump --opt -u [uname] -p [dbname] > [backupfile.sql]
Trong đó:
[uname] : user của database
[dbname] : Tên của database
[backupfile.sql] : Tên file backup muốn lưu
[--opt] : Các tùy chọn mysqldump
34
Ví dụ : Để backup database thuthuatvietnam
$ mysqldump -u root -p thuthuatvietnam > backup_ttvn.sql
Có thể tùy chọn các bảng để backup bằng cách liệt kê các bảng, các bảng cách nhau
bằng khoảng trắng (dấu space)
$ mysqldump -u root -p thuthuatvietnam bang_a bang_b > backup_ttvn.sql
Back up MySQL Database và đồng thời nén lại
Nếu database có dung lượng lớn, ta cần nén lại, khi đó có thể sử dụng cấu trúc lệnh
nén cùng gzip
$ mysqldump -u [uname] -p [dbname] | gzip -9 > [backupfile.sql.gz]
2. Restore MySQL Database
Ở trên là cách tạo bản backup, tiếp tục là cách restore. Cấu trúc lệnh như sau:
$ mysql -u [uname] -p [dbname] < [backupfile.sql]
Trong đó:
[uname] : user của database
[dbname] : Tên của database
[backupfile.sql] : Tên file backup đã lưu (file backup muốn phục hồi)
Ví dụ: Phục hồi database mangmaytinh
$ mysql -u root -p mangmaytinh < backup_ttvn.sql
Phục hồi database được nén
gunzip < [backupfile.sql.gz] | mysql -u [uname] -p [dbname]
Nếu muốn phục hồi một database đã tạo ra trước đó sử dụng lệnh mysqlimport. Cấu
trúc lệnh như sau:
mysqlimport -u [uname] -p [dbname] [backupfile.sql]
1.4.2. Các thao tác trên bảng
1.4.2.1. Tạo bảng bằng lênh SQL
Tạo bảng mới
35
Create table table_name ( column_names datatypes modifiers)
Vd : Tạo bảng Customers (khách hàng)
CREATE TABLE Customers (Customer_ID INT NOT NULL
PRIMARY KEY AUTO_INCREMENT, First_Name VARCHAR(20)
NOT NULL, Last_Name VARCHAR(30) NOT NULL,
Address VARCHAR(50), City VARCHAR(20),
State VARCHAR(2), Zip VARCHAR(20),
E_Mail VARCHAR(20), Age INT, Race VARCHAR(20),
Gender ENUM('M', 'F') DEFAULT 'F',
Eye_Color VARCHAR(10), Hair_Color VARCHAR(10),
Favorite_Activity ENUM('Programming', 'Eating', 'Biking', 'Running', 'None')
DEFAULT 'None',
Favorite_Movie VARCHAR(50),Occupation VARCHAR(30), Smoker
CHAR(0));
Tạo bảng tạm (bảng phụ) mới
Create temporary table table_name (column_names datatypes modifiers)
Tạo bảng tạm (bảng phụ) từ một câu truy vấn
Create temporary table select column_name from table_name
vd : create temporary table select * from Customers
Tạo bảng sao chép từ một bảng khác
Create table table_name select column_name from table_name_1
vd : create table Customers_copy select * from Customers
Kiểm tra sự tồn tại của bảng trước khi tạo
Create table If not Exists table_name (column_names datatypes modifiers)
1.4.2.2. Xem thông tin của CSDL, Bảng
Xem các bảng của CSDL
36
Show tables [from database_name];
Xem các cột của bảng
Show columns [from table_name];
Xem cấu trúc của bảng
Discribe table_name [from database_name];
1.4.2.3. Xoá bảng
Drop table table_name [from database_name];
1.4.2.4. Thay đổi cấu trúc bảng
Thay đổi tên cột
Alter table table_name change old_column_name
new_column_name old_datatype;
Vd : ALTER TABLE Customers
CHANGE First_Name FirstName VARCHAR(20);
Thay đổi kiểu dữ liệu
Alter table table_name change column_name column_name new_datatype;
Vd : ALTER TABLE Customers
CHANGE Last_Name Last_Name VARCHAR(50);
Đổi tên bảng
Alter table table_name Rename new_table_name;
Vd : ALTER TABLE Customers RENAME Customer_Table;
Thêm cột vào bảng
Alter table table_name add column_name datatype;
Vd : ALTER TABLE Customer ADD Last_Name VARCHAR(30);
Xoá một cột
Alter table table_name Drop column_name;
Vd : ALTER TABLE Customers DROP Last_Name;
37
Thêm khoá chính
Alter table table_name Add Primary Key (column_names);
Vd : ALTER TABLE Customers ADD PRIMARY KEY (Customer_ID);
Xoá khoá chính
Alter table table_name Drop Primary Key;
1.4.2.5. Chèn dữ liệu vào bảng
Chèn một dòng dữ liệu
Insert into table_name (column_names) values (column_values);
Vd : Tạo bảng một bảng có tên Test_Table và chèn dữ liệu
CREATE TABLE Test_Table
(Test_ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Test_Name VARCHAR(30),
Test_Date DATETIME,
Test_Giver VARCHAR(30));
INSERT INTO Test_Table (Test_ID, Test_Name, Test_Date, Test_Giver)
VALUES (NULL, 'Test','2000-01-01','Glen');
Chèn nhiều dòng dữ liệu
Insert into table_name (column_names) values (column_values),
(column_values), (…);
Vd :
INSERT INTO Test_Table (Test_ID, Test_Name, Test_Date, Test_Giver)
VALUES (NULL, 'John','2000-01-01','Glen'),
(NULL, 'Thomas','2000-01-01','Jose');
1.4.3. Các thao tác các trường
Ghi Dữ Liệu
38
1.4.3.1. Thêm dữ liệu
Sau khi chúng ta đã tạo một một bảng dữ liệu trên MySQL, thì dữ liệu trong bảng
chúng ta có thể tùy biến thay đổi và cập nhật một cách dễ dàng .
Code SQL :
INSERT INTO `id_student`(`AI`, `nick`, `name`, `ngaysinh`, `nhom`, `email`)
VALUES ('3','dat','dat','31/10/92','TC 7',dtran3110'');
Trước hết các bạn dùng INSERT INTO để thông báo ‘tớ sắp chèn thêm một hàng
vào đấy !’
Tiếp theo, các bạn chỉ ra tên của cái bảng mà bạn định chèn, ở đây là
bảng id_student, rồi đặt vào trong ngoặc đơn tên các cột của bảng đó.
Cuối cùng, bạn viết VALUE rồi ghi giá trị cần chèn vào theo đúng thứ tự với các
cột để khỏi nhầm lẫn.
Riêng mục AI hiểu một cách khác là ID, thì làm trên MySQL cũng như trên
Phpmyadmin nó sẽ tự động tăng dần.
Nếu thích các bạn có thể không cần ghi ra tên các cột ngay sau tên bảng, code vẫn
chạy đúng, nhưng như vậy sẽ thiếu sự rõ ràng khi mình đọc code :
Code SQL:
INSERT INTO VALUES ('3','dat','dat','31/10/92','TC 7',dtran3110'');
39
Mình vừa thêm thành công dữ liệu vào bảng id_student
Sau đây mình sẽ kiểm tra xem dữ liệu có AI = 4 đã có trong bảng chưa ?
Sử dụng câu lệnh SQL :
SELECT * FROM `id_student` WHERE 1;
Dữ liệu trong bảng sẽ được hiển thị :
40
1.4.3.2. Sửa dữ liệu
Trên 4.1 chúng ta vừa thao tác là thêm dữ liệu vào bảng tiếp đây để cập hay thay
đổi những thông tin dữ liệu trong bảng thì sử dụng câu lệnh Sql sau
Lệnh SQL :
UPDATE `id_student` SET `AI`=[value-1],`nick`=[value-2],`name`=[value-
3],`ngaysinh`=[value-4],`nhom`=[value-5],`email`=[value-6] WHERE 1;
Trước hết, từ khóa UPDATE cho biết mình sắp sửa đổi một dữ liệu
Tiếp theo : tên của bảng cần sửa
Từ khóa SET ngay sau đó dùng để thay đổi giá trị của dữ liệu cần sửa đổi
Dùng phép gán để thay đổi giá trị
WHERE để chỉ ra ID của hàng chứa dữ liệu cần sửa
Nếu bạn không biết ID của nó là bao nhiêu, bạn có thể vào PhpMyAdmin để
xem .
41
1.4.3.3. Xóa dữ liệu
Thao tác cuối cùng là Delete! , nói đến xóa dữ liệu thì các bạn thao tác thật thận
trọng vì nhiều khi thực tế có nhiều dữ liệu quan trọng một khi Xóa rùi thì có thể không
lấy lại được hoặc vô cùng phức tạp.
Lệnh SQL :
DELETE FROM `id_student` WHERE AI= ‘1’ ;
DELETE mình dùng từ khóa
FROM để chỉ ra xóa ở đâu (ở bảng nào) và chỉ ra tên của bảng,
WHERE để chỉ ra hàng cần xóa! Bạn cũng có thể viết WHERE AI=1. Kết quả
42
1.4.3.4. Kết luận
Trên đây là thao tác thêm sửa xóa dữ liệu trên MySql bằng lệnh trên ubuntu Server
Có cách khác để thao tác dễ dàng hơn là các bạn dùng trình duyệt web của máy
client trong local truy cập vào địa chỉ mạng và tới phpmyadmin.
Vd : 192.168.1.9/phpmyadmin
43
Bạn sẽ thao tác bằng hỉnh ảnh trực quan và cũng có thể kiểm tra khi chúng ta thao
tác bằng dòng lệnh đã thành công chưa …
1.5. Liên kết mysql và PHP chúng ta cần nắm 6 hàm cơ bản:
1.5.1.Kết nối cơ sở dữ liệu:
Cú pháp:
mysql_connect(“hostname”,”user”,”pass”)
1.5.2. Lựa chọn cơ sở dữ liệu:
Cú pháp:
mysql_select_db(“tên_CSDL”)
Ví dụ:
$conn=mysql_connect(“localhost”,”root”,”root”) or die(” khong the
ket noi”);
mysql_select_db(“demo”);
1.5.3. Thực thi câu lệnh truy vấn:
Cú pháp:
mysql_query(“Câu truy vấn ở đây”);
44
1.5.4. Đếm số dòng dữ liệu trong bảng:
Cú pháp:
mysql_num_rows();
1.5.5. Lấy dữ liệu từ bảng đưa vào mảng:
Cú pháp:
mysql_fetch_array();
1.5.6. Đóng kết nối cơ sở dữ liệu:
Cú pháp:
mysql_close();
Tạo cơ sở dữ liệu dựa trên từng đoạn code sau:
mysql -hlocalhost -uroot –proot
mysql>create database demo_mysql;
mysql> use demo_mysql;
mysql>create table user(id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL, password CHAR(50) NOT NULL, PRIMARY
KEY(id));
Tạo trang test.php. Đầu tiên chúng ta sẽ kết nối cơ sở dữ liệu.
<?
$conn=mysql_connect(“localhost”, “root”, “root”) or die(“can’t
connect database”);
mysql_select_db(“demo_mysql”,$conn);
?>
Tiếp đến viết câu truy vấn lấy ra tất cả user từ database.
<?
$sql=”select * from user”;
45
$query=mysql_query($sql);
?>
Kiểm tra xem trong bảng dữ liệu đã tồn tại user nào chưa ?. Nếu chưa thì xuất ra
thông báo lỗi, ngược lại thì đưa chúng vào mảng và lặp cho đến hết bảng dữ liệu.
<?
if(mysql_num_rows($query) == 0)
{
echo “Chua co du lieu”;
}
else
{
while($row=mysql_fetch_array($query))
{
echo $row[username] .” – “.$row[password].”<br />”;
}
}
?>
Và cuối cùng chúng ta đóng kết nối và kết thúc thao tác xử lý.
<?
mysql_close($conn);
?>
Và cuối cùng là file hoàn chỉnh của ứng dụng trên:
<?
$conn=mysql_connect(“localhost”, “root”, “root”) or die(“can’t
connect database”);
mysql_select_db(“demo_mysql”,$conn);
$sql=”select * from user”;
$query=mysql_query($sql);
if(mysql_num_rows($query) == 0)
46
{
echo “Chua co du lieu”;
}
else
{
while($row=mysql_fetch_array($query))
{
echo $row[username] .” – “.$row[password].”<br />”;
}
}
mysql_close($conn);
?>
47
48
Phần 2: PHP MYADMIN và MySQL Client
Định nghĩa
PhpMyAdmin là một công cụ nguồn mở miễn phí được viết bằng PHP dự định để xử lý quản trị của MySQL thông qua một trình duyệt web. Nó có thể thực hiện nhiều tác vụ như tạo, sửa đổi hoặc xóa bỏ cơ sở dữ liệu, bảng, các trường hoặc bản ghi; thực hiện báo cáo SQL; hoặc quản lý người dùng và cấp phép.
2.1. Thao tác trên Phpmyadmin:
2.1.1. Tạo Database (CSDL – Cơ Sở Dữ Liệu)
Hình1 . giao diện của phpMyAdmin
49
Hinh 2 tao database “Quan Ly”
2.1.2. Tạo Bảng (table)
Thêm bảng vào database: Ta thêm bảng user có cấu trúc như sau
Field Kiểu dữ liệu Mô tả
id Integer (10) Là Khóa chính của bảng có chiều dài ký tứ tối đa là
10
username Varchar (50) Là tên đăng nhập có chiều dài kí tự tối đa là 50
password char (50) Là mật khẩu có chiều dài ký tự tối đa là 50
Email Varchar (50) Email với chiều dài ký tự tối đa là 50
50
address varchar
(200) địa chỉ
Phone integer (50) Số điện thoại
gender char (1) thể hiện giới tính
Tiếp theo ta chọn database Quan Ly mà ta cần thêm bảng User vào như hình bên
dưới
Nhấn Go
Sau khi nhập đầy đủ thông tin ta được như hình bên dưới
51
Sau đó nhấn save để lưu lại ta được bảng user như hình bên dưới
2.1.3. Thêm dữ liệu vào Bảng (table)
Tiếp theo ta thêm dữ liệu vào trong bảngClick vào bảng user và chọn Insert ta
được giao diện như sau
Tã đã thêm dữ liệu vào bảng
2.1.4. Sửa và Xóa dữ liệu trong Bảng (table)
Bước 1: Chọn table muốn xóa sửa (ví dụ danhmuc)
Bước 2: Nhắp link Browse.
Bước 3: Hiệu chỉnh/xóa: khi muốn sửa xóa phải tích vào dòng muốn thao tác
Sửa record: Nhắp nút Edit (cây viết) trên dòng chứa record.
Xóa record : Nhắp nút Drop (dấu nhân màu đỏ) trên dòng chứa record.
52
2.1.5. Sửa cấu trúc Table (bảng):
Bước 1: Chọn table
Bước 2: Nhắp link Structure
Bước 3:
Chỉnh field: Nhắp nút Change (cây viết)
Xóa field : Nhắp nút Drop (dấu nhân màu đỏ)
Thêm field : Nhắp nút Go trong mục Add
2.1.6. Đổi tên Bảng (table)
Bước 1: Chọn table
Bước 2: Nhắp link Operations
Bước 3. Rename table to: gõ tên mới
53
Bước 4: Nhắp nút Go
Ví dụ: Đổi tên table User thành Nguoidung
2.1.7. Xóa Bảng (table)
Bước 1: Chọn database
Bước 2: Nhắp Drop
Ví dụ: Xóa table Manh
2.2. Sử dụng MySQL Client để kết nối với MySQL server
Hiện nay có rất nhiều phần mềm MySQL Client trong tài liệu này sẽ sử dụng
dbForge Studio Express for MySQL
Để sử dụng dbForge Studio Express for MySQL đầu tiên ta download phần mềm
tại http://www.devart.com/dbforge/mysql/studio/download.html và cài đặt lên máy trạm
như phần mềm bình thường
Dưới đây là một vài minh họa về các thao tác cơ bản sử dụng trên
54
dbForge Studio Express for MySQL
55
Giao diện khi chạy dbForge Studio Express for MySQL
2.2.1. Tạo kết nối với MySQL server
Trong phần mềm các thao tác trên MySQL server được thực hiện qua giao hiện đồ
họa trực quan thân thiện
56
2.2.2.
Thao tác tạo database
Nhập tên và kiểu tham chiếu của database
57
2.2.3. Tạo bảng
58
2.2.4. Sửa cấu trúc bảng
59
2.2.5. Xóa bảng
2.2.6. Đổi tên bảng
Các thao tác với dữ liệu
60
2.2.7. Xóa database
61
KẾT LUẬN
Sau khi tìm hiểu và thực hành đề tài bài tập lớn nhóm chúng em đã có sự tập trung
các ý để hoàn thiện tập tài liệu này với một số website tham khảo sau đây:
http://vi.wikipedia.org/wiki/SQL
http://forum.ubuntu-vn.org/viewtopic.php?f=51&t=10750
http://www.quantrimang.com.vn/cai-dat-apache2-voi-php5-va-ho-tro-mysql-tren-
ubuntu-11-10-lamp-83444
và các tài liệu trên sách báo và thực hành trực tiếp trên máy.
Chúng em đã hoàn thành cuốn tài liệu tìm hiểu và triển khai mysql server trên
linux server, cuốn tài liệu chắc chắn còn những thiếu sót mong được thầy và các bạn góp
ý để hoàn thiện hơn. Xin cảm ơn thầy và các bạn.
Ha nôi 10/11/2014
Nhóm 01
62