Samba && 網路芳鄰
SAMBA伺服器安裝設定
#cd /usr/ports/net/
//更新net下的所有ports //Update ports 有些時候最新Ports反而安裝有問題耶~~~
#portsnap fetch && portsnap extract //別更新
# cd samba4
//進行安裝
#make install clean
//解除安裝
#make deinstall clean
2014年12月16日 星期二
Using MySQL 5.5 on FreeBSD 10.1
SQL語法教學
FreeBSD MySQL
Mysql調整成全UTF-8語系
MySQL 超新手入門
#mysql -u root -p
#Enter password:XXXXXXXX
//若出現
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 26
Server version: 5.5.40-log Source distribution
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
//表示正常
//*調整Mysql成UTF-8語系*//
mysql>\s 或 mysql>status 或 mysql>show variables like 'character_set%';
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
#ee /usr/local/etc/my.cnf_
//在[local]中 加入
default-character-set=utf8
/在[mysqld]中 加入
#my add by Michael 2014/12/18
datadir=/home/mysql
default-character-set=utf8
default-collation=utf8_general_ci
//刪除資料庫名為XXXXX
mysql>DROP DATABASE XXXXX;
//建立資料庫名為XXXXX
mysql>show character set; //其中Charset 有utf8
mysql>create database XXXXX
或
mysql>create database XXXXX default character set utf8;
mysql>show databases;
mysql>show create database XXXXX;
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
FreeBSD MySQL
Mysql調整成全UTF-8語系
MySQL 超新手入門
#mysql -u root -p
#Enter password:XXXXXXXX
//若出現
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 26
Server version: 5.5.40-log Source distribution
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
//表示正常
//*調整Mysql成UTF-8語系*//
mysql>\s 或 mysql>status 或 mysql>show variables like 'character_set%';
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
#ee /usr/local/etc/my.cnf_
//在[local]中 加入
default-character-set=utf8
/在[mysqld]中 加入
#my add by Michael 2014/12/18
datadir=/home/mysql
default-character-set=utf8
default-collation=utf8_general_ci
//重啟mysql
//刪除資料庫名為XXXXX
mysql>DROP DATABASE XXXXX;
//建立資料庫名為XXXXX
mysql>show character set; //其中Charset 有utf8
mysql>create database XXXXX
或
mysql>create database XXXXX default character set utf8;
mysql>show databases;
mysql>show create database XXXXX;
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
mysql>
2014年12月15日 星期一
FreeBSD 10.1 安裝 MySQL55
//連網路 可通FTP HTTP
安裝 FreeBSD 9.0R
freebsd bsdinstall on google driver
安裝MySQL Apache PHP
KeyMap 選 NO
hostname: FreeBSD4EE.XXXX.com.tw
選
doc
ports
src
Auto (UFS)
Entire Disk
Archive Extraction.....
NewPassword__ 輸入密碼
Retype NewPassword__ 再次輸入密碼
Configure IPv4__
DHCP 選 NO
//Use static IP
IP Address__
Subnet Mask__
Default Router__
Configure IPv6 選 No
IPv4 DNS #1 168.95.1.1
IPv4 DNS #2 168.95.192.1
Set to UTC 選 No
Select a region
Asia
Taiwan
ntpd 自動校正時間,當使用port安裝軟體時,若時間不正確可能造成安裝錯誤
CST look reasonable
Yes
Add User 選 No //事後可用 #adduser 指令加
Documentation Installation
en
zh_tw
Choose Installation Media
FTP
Taiwan #11 ftp11.tw.freebsd.org
Documentation Installation.....
//too long to installation
Final Configuration
Exit
Manual Configuration
No
Complete
Reboot
Take out DVD
//IP Address on /etc/rc.conf
ee /etc/rc.conf
hostname="FreeBSD4EE.XXXX.com.tw"
keymap="hy.armscii-8.kbd"
ifconfig_em0="inet 61.XXX.XXX.XXX netmask 255.255.255.248"
defaultrouter="61.XXX.XXX.XXX"
sshd_enable="YES"
sendmail_enable="NONE"
//*修改putty ssh port 為443(原https用)*//
#ee /etc/ssh/sshd_config //注意 不是 "/etc/ssh/ssh_config"
找#port 22
改成port 443
改好後Run
kill -s HUP `cat /var/run/sshd.pid`
即可啟動 Port 443
//*for SU*//
#ee /etc/group
加上Wheel : root,XXXXXXXX
//*設PuTTy連線不中斷*//
//*修改預設登入語系為中文UTF-8編碼*//
#ee /etc/login.conf
//將
#russian|Russian Users Accounts:\
# :charset=KOI8-R:\
# :lang=ru_RU.KOI8-R:\
# :tc=default:
//加上"#"
//新增
taiwan|Taiwan Users Accounts:\
:charset=UTF-8:\
:lang=zh_TW.UTF-8:\
:tc=default:
//save
#cap_mkdb /etc/login.conf //更新系統記錄
#vipw -d /etc
username:$1$zZBn.ecS$yPoKbh7e0KrTVDZmfnMRs/:1001:1001:taiwan:0:0:System User:/home/username:/
bin/sh //加入taiwan
#ee /etc/adduser.conf
//加入_
defaultclass = taiwan
//save
# locale
//若出現
LANG=zh_TW.UTF-8
LC_CTYPE=”zh_TW.UTF-8″
LC_COLLATE=”zh_TW.UTF-8″
LC_TIME=”zh_TW.UTF-8″
LC_NUMERIC=”zh_TW.UTF-8″
LC_MONETARY=”zh_TW.UTF-8″
LC_MESSAGES=”zh_TW.UTF-8″
LC_ALL=
//表示正常
//所有使用者都要登入重新設定乙次
//Update ports 就是有些時候最新Ports反而安裝有問題耶~~~
//cd 至不同dir可只更新該dir下的ports 若在根目錄下指令則所有ports都更新 會花許多時間
#portsnap fetch && portsnap extract
//*使用 ports 安裝MySQL55軟體*//
#cd /usr/ports/databases/mysql55-server
#make search name="xxx" //找Port Name
#make install clean //編譯安裝並清除安裝檔案
....
ee /usr/local/etc/rc.d/mysql-server //看要設定哪些啟動選項
# Add the following line to /etc/rc.conf to enable mysql:
# mysql_enable (bool): Set to “NO” by default.
# Set it to “YES” to enable MySQL.
# mysql_limits (bool): Set to “NO” by default.
# Set it to yes to run `limits -e -U mysql`
# just before mysql starts.
# mysql_dbdir (str): Default to “/var/db/mysql”
# Base database directory.
# mysql_pidfile (str): Custum PID file path and name.
# Default to “${mysql_dbdir}/${hostname}.pid”.
# mysql_args (str): Custom additional arguments to be passed
# to mysqld_safe (default empty).
#ee /etc/rc.conf
hostname="XXX.XXX.XXX.tw"
ifconfig_em0="inet XXX.XXX.XXX.XXX netmask 255.255.255.248"
defaultrouter="XXX.XXX.XXX.XXX"
sshd_enable="YES"
ntpd_enable="NO"
dumpdev="NO"
sendmail_enable="NONE"
mysql_enable="YES" //開機mysql自動啟動,可用/usr/local/etc/rc.d/mysql-server start or stop 啟動mysql
mysql_dbdir="/home/mysql"” //設定mysql資料庫放在/home/mysql
/*
cp /boot/defaults/loader.conf /boot/loader.conf
#ee /boot/loader.conf
autoboot_delay="3"
//出現問題 ???
OK boot 按ENTER //即可重新開機
*/
#cd /home
#mkdir mysql
#chown -R mysql:mysql mysql //設定 "/home/mysql" 之權限給mysql帳號及mysql群組
#/usr/local/etc/rc.d/mysql-server start
# Starting mysql
#ps aux|grep mysql
mysql 44190 0.0 0.1 9924 1892 ?? Is 10:50下午 0:00.02 /bin/sh /usr/local/bin/mysqld_safe –defaults-extra-file
mysql 44273 0.0 2.1 199176 43864 ?? I 10:50下午 0:00.29 [mysqld]
root 44276 0.0 0.0 496 300 1 R+ 10:51下午 0:00.00 grep mysql
//
#mysql -u root -p
#Enter password: //直接按ENTER
//出現
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.22 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql> //正常
mysql>set password=password('XXXXXXXX'); //要加";"
Query OK, 0 rows affected (0.00 sec) //正常
mysql>exit //離開
#cp /usr/local/share/mysql/my-medium.cnf /usr/local/etc/my.cnf
#ee /usr/local/etc/my.cnf
/*
my-innodb-heavy-4G.cnf : 如果要做大型關聯式資料庫,還會用到transaction用這個吧。
my-huge.cnf: 適合 1GB – 2GB RAM的主機使用。
my-large.cnf: 適合 512MB RAM的主機使用。
my-medium.cnf: 只有 32MB – 64MB RAM 的主機使用,或者有 128MB RAM 但需要運行其他伺服器,例如 web server。
my-small.cnf: 記憶體少於 64MB 時適用這個,MySQL 會佔用較少資源。
*/
#ee /usr/local/etc/my.cnf
hread_concurrency = 8 //設定為CPU核心的兩倍
skip-networking //資料庫不透過網路連線
/*
項目 autoboot_delay="10"
簡介 這是可以讓您決定開機時要等待幾秒的時間來設定開機時的參數,這在初安裝完系統後的 /etc/rc.conf 檔案中是不存在的。如果您很介意開機的速度,您需要手動將它建立。若未設定此值,系統預設是等待 10 秒鐘。
項目 defaultrouter="xxx.xxx.xxx.xxx"
簡介 設定預設的通訊匣 (geteway) 位址。
如果主機不是採用撥接方式來連結網路或主機不是要拿來做通訊匣用的話,通常您是需要設定的。
如︰defaultrouter="192.168.168.1"
項目 gateway_enable="YES"
簡介 是否啟用封包轉送 (IP forwarding) 功能。
主機打算做 router/gateway 時才需要。通常啟用時,defaultrouter 設定值是不需設定的。
可用參數︰YES / NO
項目 hostname="www.mycorp.com"
簡介 設定主機名稱。
預設是主機的完整網域名稱,如︰www.mycorp.com
您可以只輸入主機名稱,如︰www
此設定參數是沒有預設值的,需由您來指定
如果要改變主機名稱 (三思而後行),也是在此變更即可。
項目 network_interfaces="rl0 ed0 lo0"
簡介 設定您的網路介面。
預設值為 auto。
通常此設定無需指定,您可以刪除或註解掉它 -- 如果您在 /etc/rc.conf 看見此設定的話。
然如果您有某網路介面想短期間不啟動,您需於此設定要啟動使用的網路介面名稱。
項目 ifconfig_lo0="inet 127.0.0.1"
簡介 遞迴裝置 (loopback)。
這是個虛擬出來的網路介面,讓您可以連線到主機本身。
通常您只會在 /etc/defaults/rc.conf 中看到它,您無需去改變它的設定。
項目 ifconfig_zzY="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"
簡介 設定網路介面的 IP 位址與網路遮罩等等。
其中 zz 為裝置介面的名稱;Y 為該裝置的編號;xxx 為 IP 的數值;inet 為網路位址 (Internet address),即所謂的 IP 位址;netmask 為網路遮罩。
如︰ifconfig_ed0="inet 192.168.168.1 netmask 255.255.255.0"
如果您的網路中有 DHCP,且想讓此網路介面經由 DHCP 來抓取設定值,可用 ifconfig_zzY="DHCP" 設定它。如︰ifconfig_ed0="DHCP"
項目 ifconfig_zzY_aliasxY="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"
簡介 設定網路介面 zzY 的 IP Alias。
如果您想讓同一個網路介面使用一個以上的 IP 位址,您就會需要了解此設定。
ifconfig_zzY_aliasY 與 ifconfig_zzY 的設定方式是相同的,不過不能使用 DHCP 參數。
範例︰
ifconfig_rl0="inet 192.168.168.1 netmask 255.255.255.0"
ifconfig_rl0_alias0="inet 192.168.168.254 netmask 0xffffffff"
ifconfig_rl0_alias1="inet 192.168.169.1 netmask 255.255.255.240
ifconfig_rl0_alias2="inet 192.168.169.15 netmask 255.255.255.255
0xffffffff 為 255.255.255.255 的十六進位表示值。
這兒有兩點要注意的︰
IP alias 必須由 alias0 依序遞增(alias0,alias1,........,alias9,.....aliasxx),若是中間有所跳號時,系統在配置網卡 IP address 時,將會停在第一個跳號的所在。
若要為同一塊網卡額外添加同一 subnet 的 IP address 時,則需為此額外添加的 IP address 指定一不相衝突的 netmask,而通常 0xffffffff 是最適用的了。
請詳細比對上述範例中的差異,應可明瞭於心!!
項目 kern_securelevel="-1"
簡介 設定系統安全等級。
預設值為 -1;最大值為 3
-1 => 非安全模式。效用等於 0
0 => 非安全模式。具『不可移除』與『只能附加』的旗標屬性 (flags) 可以被設定者或 root 移除;所有的裝置 (device) 其讀取、寫入動作將取決於本身的權限設定。
1 => 安全模式。具『不可移除』與『只能附加』的 flags 無法被移除;/dev/mem 、/dev/kmem 只能唯讀;硬碟中已掛載的檔案系統無法再 newfs;核心模組無法動態載入或卸載。
2 => 高度安全模式。除了「安全模式」的限制之外,硬碟無論掛載與否皆無法再 newfs。為了預防入侵者先行卸載硬碟後再將它給 newfs 摧毀硬碟內容。此模式下您也無法再加裝任何硬碟給系統。
3 => 網路安全模式。除了「高度安全模式」的限制之外,IP 封包過濾規則無法再變更且頻寬控管 (dummynet) 等功能將無法使用。
需 kern_securelevel_enable 設定為 YES 才有作用。
項目 kern_securelevel_enable="YES"
簡介 設定為 YES 將會在系統啟動時設依據 kern_securelevel 中的設定值來設定系統安全等級。
可用參數︰YES / NO
項目 local_startup="/usr/local/etc/rc.d /usr/X11R6/etc/rc.d"
簡介 設定啟動目錄。
如果有程式想在一開機時就自動執行,以往是寫在 /etc/rc.local 檔案中;現在可以將這些程式的執行動作寫成 shell 指令稿 (shell script),放在 local_startup 所指定的目錄下,日後維護與偵錯時皆相當方便。
項目 ntpdate_enable="YES"
簡介 設定開機後執行系統時間校時。
可用參數︰YES / NO
項目 ntpdate_flags="clock.stdtime.gov.tw"
簡介 設定系統時間要以哪部主機來做標準時間校時。
請選您可信任、距離近、頻寬足的主機來做校時。
項目 sshd_enable="YES"
簡介 OpenSSH SSH daemon
telnet 的安全性頗受爭議,如果您沒有提供 telnet 的必需性的話,請將它設為 YES 來替代 telnet 吧。
項目 inetd_enable="YES"
簡介 Internet super-server
這通常是需要的,特別是在您的主機打算用來提供網路服務時。
相關的網路服務設定檔在 /etc/inetd.conf
*/
//DNS on /etc/resolv.conf
ee /etc/resolv.conf
nameserver 168.95.1.1
nameserver 168.95.192.1
// Install MySQL 56 server
# cd /usr/ports
# cd databases
# ls
# cd mysql56-server
# make install clean
Enable Babel extension
install examples
OK
ee /etc/rc.conf
mysql_enable="YES"
or
# /usr/local/etc/rc.d/mysql-server start
//Apache+MySQL+PHP install
//http://bbs.chinaunix.net/thread-4160859-1-1.html
//http://neroli.pixnet.net/blog/post/32287589-%5Bfreebsd%5D-apache%2Bphp%2Bmysql%E5%AE%89%E8%A3%9D%E8%88%87%E8%A8%AD%E5%AE%9A
//用Ports安裝Apache+PHP+MySQL
//http://ausz1219.blogspot.tw/2013/12/freebsdportsapachephpmysql.html
//MySQL 超新手入門(17)查詢
//http://www.codedata.com.tw/database/mysql-tutorial-17-information_schema/
//【FreeBSD】用 Ports 安裝 Apache + PHP + MySQL
//http://bojack.pixnet.net/blog/post/12983723-%E3%80%90freebsd%E3%80%91%E7%94%A8-ports-%E5%AE%89%E8%A3%9D-apache-%2B-php-%2B-mysql
//FreeBSD MySQL
//http://www.study-area.org/2freebsd/server/www/mysql.htm#03
/*
設定 root 和其他 user 的密碼
mysqladmin -u root password '新密碼'
mysqladmin -u root -p
Enter password: 此時再輸入密碼(建議採用)
use mysql;
mysql> UPDATE user SET password=password('新密碼') where user='root';
只改 root 的密碼,如果沒有用 where ,則表示改全部 user 的密碼
mysql> FLUSH PRIVILEGES; 在 mysql 資料庫內,一定要用 flush 更新記憶體上的資料
刪除空帳號
mysql> DELETE FROM user WHERE User = '';
mysql> FLUSH PRIVILEGES;
建立新帳號
mysql> GRANT 權限 ON 資料庫或資料表 TO 使用者 IDENTIFIED BY '密碼';
權限
資料庫或資料表
*.* 所有資料庫裡的所有資料表
* 預設資料庫裡的所有資料表
資料庫.* 某一資料庫裡的所有資料表
資料庫.資料表 某一資料庫裡的特定資料表
資料表 預設資料庫裡的某一資料表
設定/修改權限
用 root 登入 MySQL
mysqladmin -u root -p
Enter password:
mysql> GRANT all ON db35.* TO s35@'localhost' IDENTIFIED BY 's35';
把 db35 這個資料庫(含其下的所有資料表),授權給 s35,從 localhost 上來,密碼為s35
mysql> GRANT all ON *.* 把所有資料庫及資料表授權給別人,太危險了!
mysql> GRANT all??? ON www.* TO '*'@'*' IDENTIFIED BY '';
把 www 這個資料庫(含其下的所有資料表),授權給 任何機器任何人,無密碼(通常給不特定人士使用)
mysql> FLUSH PRIVILEGES; (最後一定要強迫更新權限)
二、資料庫/資料表/欄位的操作
建立資料庫 CREATE DATABASE 資料庫名;
語法:CREATE DATABASE db_name
使用資料庫 USE 資料庫名;
語法:USE db_name
刪除資料庫 DROP DATABASE 資料庫名;
語法:DROP DATABASE [IF EXISTS] db_name
建立資料表
CREATE TABLE 資料表名 (欄位1 資料型態, 欄位2 資料型態, ......);
語法:
CREATE TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options] [select_statement]
例:
craete database basic;
use basic;
create table basic(
no char(4)
name char(10)
id char(10));
create_definition:
col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
[PRIMARY KEY] [reference_definition]
or PRIMARY KEY (index_col_name,...)
or KEY [index_name] KEY(index_col_name,...)
or INDEX [index_name] (index_col_name,...)
or UNIQUE [INDEX] [index_name] (index_col_name,...)
or [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name,...)
[reference_definition]
or CHECK (expr)
資料結構(type):
資料型態 說明
TINYINT 有符號的範圍是-128到127, 無符號的範圍是0到255。
SMALLINT 有符號的範圍是-32768到32767, 無符號的範圍是0到65535。
MEDIUMINT 有符號的範圍是-8388608到8388607, 無符號的範圍是0到16777215。
INT 有符號的範圍是-2147483648到2147483647, 無符號的範圍是0到4294967295。
INTEGER INT的同義詞。
BIGINT 有符號的範圍是-9223372036854775808到 9223372036854775807,無符號的範圍是0到18446744073709551615。
FLOAT 單精密浮點數字。不能無符號。允許的值是-3.402823466E+38到- 1.175494351E-38,0 和1.175494351E-38到3.402823466E+38。
DOUBLE 雙精密)浮點數字。不能無符號。允許的值是- 1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308。
DOUBLE PRECISION DOUBLE的同義詞。
REAL DOUBLE的同義詞。
DECIMAL DECIMAL值的最大範圍與DOUBLE相 同。
NUMERIC DECIMAL的同義詞。
DATE 日期。支援的範圍是'1000-01-01'到'9999-12-31'。
DATETIME 日期和時間組合。支援的範圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'
TIMESTAMP 時間戳記。範圍是'1970-01-01 00:00:00'到2037年的某時。
TIME 一個時間。範圍是'-838:59:59'到'838:59:59'。
YEAR 2或4位數字格式的年(內定是4位)。允許的值是1901到2155。
CHAR 固定長度,1 ~ 255個字元。
VARCHAR 可變長度,1 ~ 255個字元。
TINYBLOB
TINYTEXT 最大長度為255(2^8-1)個字符。
MEDIUMBLOB
MEDIUMTEXT 最大長度為16777215(2^24-1)個字符。
LONGBLOB
LONGTEXT 最大長度為4294967295(2^32-1)個字符。
ENUM 一個ENUM最多能有65535不同的值。
SET 一個SET最多能有64個成員。
index_col_name:
col_name [(length)]
reference_definition:
REFERENCES tbl_name [(index_col_name,...)]
[MATCH FULL | MATCH PARTIAL]
[ON DELETE reference_option]
[ON UPDATE reference_option]
reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
table_options:
type = [ISAM | MYISAM | HEAP]
or max_rows = #
or min_rows = #
or avg_row_length = #
or comment = "string"
or auto_increment = #
select_statement:
[ | IGNORE | REPLACE] SELECT ... (Some legal select statement)
刪除資料表 DROP TABLE 資料表名;
語法:DROP TABLE [IF EXISTS] tbl_name [, tbl_name,...]
改變資料表結構(新增/刪除欄位、建立/取消索引、改變欄位資料型態、欄位重新命 名)
語法:
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...]
alter_specification:
ADD [COLUMN] create_definition [FIRST | AFTER column_name ]
or ADD INDEX [index_name] (index_col_name,...)
or ADD PRIMARY KEY (index_col_name,...)
or ADD UNIQUE [index_name] (index_col_name,...)
or ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
or CHANGE [COLUMN] old_col_name create_definition
or MODIFY [COLUMN] create_definition
or DROP [COLUMN] col_name
or DROP PRIMARY KEY
or DROP INDEX key_name
or RENAME [AS] new_tbl_name
or table_option
範例:
欄位重新命名
mysql> ALTER TABLE t1 CHANGE a b INTEGER;
將資料表 t1 欄位 a 改名為 b (其資料型態是 integer)
改變欄位資料型態
mysql> ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;
mysql> ALTER TABLE t1 MODIFY b BIGINT NOT NULL;
將資料表 t1 欄位 b 的資料型態改為 bigint not null
mysql> CREATE TABLE t1 (a INTEGER,b CHAR(10));
mysql> ALTER TABLE t1 RENAME t2;
將資料表 t1 改名為 t2
mysql> ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);
將資料表 t2 欄位 a 資料型態由 integer 改為 tinyint not null ,欄位 b 改名為 c 資料型態改為 char(20)
mysql> ALTER TABLE t2 ADD d TIMESTAMP;
在資料表 t2 增加新欄位 d 資料型態是 timestamp
mysql> ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);
在資料表 t2 ,對 d 欄位做索引,並以欄位 a 作為主索引鍵
mysql> ALTER TABLE t2 DROP COLUMN c;
刪除欄位 c
mysql> ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD INDEX (c);
新增欄位 c,並做索引(做索引的欄位必須為 not null )
資料表最佳化 OPTIMIZE TABLE 資料表名
語法:OPTIMIZE TABLE tbl_name
欄位長度有變動、刪除大量資料,都應進行資料表最佳化
三、紀錄的操作
插入一筆或多筆紀錄 INSERT INTO 資料表(欄位1,欄位2,......) VALUES(值1,值2,......), (值1,值2,......), ........
(MySQL 3.22.5 以後可插入多筆記錄)
語法:
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES (expression,...),(...),...
or INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
or INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name
SET col_name=expression, col_name=expression, ...
範例:
mysql> INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);
不可寫成
mysql> INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15);
因為:欄位 col1 的值先填入後,才可以計算欄位 col2
從檔案讀入資料
語法:
LOAD DATA [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE]
INTO TABLE tbl_name
[FIELDS
[TERMINATED BY '\t'] 每一欄位以某字元分開(內定是 tab)
[OPTIONALLY] ENCLOSED BY "] 每一欄位以某字元括住(內定是不使用括號)
[ESCAPED BY '\\' ]]
[LINES TERMINATED BY '\n'] 設定換行的字元(內 定是 \n)
[IGNORE number LINES] 忽略最前面幾行(最前面幾筆記錄不抄進來)
[(col_name,...)]
範例:
mysql> USE db1;
mysql> LOAD DATA INFILE "./data.txt" INTO TABLE db2.my_table;
從目前 MySQL 目錄讀入 data.txt
mysql> LOAD DATA INFILE "./88.txt" INTO TABLE TEACHER FIELDS TERMINATED BY ' ' ;
從目前 MySQL 目錄(我的在 /var/lib/mysql )讀入 data.txt ,每一欄位以 空白 分開
mysql> LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata (col1,col2,...);
只將 persondata.txt 裡某些欄位的資料抓過來
刪除紀錄 DELETE [LOW-PRIORITY] FROM 資料表名 WHERE 條件 [LIMIT rows]
語法:
DELETE [LOW_PRIORITY] FROM tbl_name
[WHERE where_definition] [LIMIT rows]
LOW-PRIORITY 是等到沒有用戶端使用時再刪
LIMIT rows 限制刪除紀錄的筆數
範例:
mysql> DELETE FROM 資料表名;
刪除所有紀錄
mysql> DELETE FROM 資料表名 WHERE 1>0;
刪除所有紀錄,但速度較慢,方便在螢幕上看
更新一筆紀錄 (語法與 INSERT 相同)
REPLACE INTO 資料表(欄位1,欄位2,......) VALUES(值1,值2,......)
語法:
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
VALUES (expression,...)
or REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
SELECT ...
or REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name
SET col_name=expression, col_name=expression,...
更新多筆紀錄
語法:
UPDATE [LOW_PRIORITY] tbl_name SET col_name1=expr1,col_name2=expr2,... [WHERE where_definition]
如果沒有設定 WHERE 條件,則整個資料表相關的欄位都更新
範例:
mysql> UPDATE persondata SET age=age+1;
將資料表 persondata 中,所有 age 欄位都加 1
mysql> UPDATE persondata SET age=age*2, age=age+1;
將資料表 persondata 中,所有 age 欄位都*2,再加 1
四、資料的輸出
SELECT
語法:
SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [DISTINCT | ALL]
select_expression,...
[INTO OUTFILE 'file_name' export_options]
[FROM table_references
[WHERE where_definition]
[GROUP BY col_name,...]
[HAVING where_definition]
[ORDER BY {unsigned_integer | col_name} [ASC | DESC] ,...]
[LIMIT [offset,] rows]
[PROCEDURE procedure_name] ]
範例:
排序輸出
select * from 資料表名 order by 欄位名1,欄位名2,欄位名3......
反向排序輸出
select * from 資料表名 order by 欄位名1,欄位名2,欄位名3...... desc
mysql> select concat(last_name,', ',first_name) AS full_name
from mytable ORDER BY full_name;
mysql> select t1.name, t2.salary from employee AS t1, info AS t2
where t1.name = t2.name;
顯示資料庫 employee(別名 t1) 裡,資料表 t1 的欄位 name 和 資料表 t2 的欄位 salary 當.....
mysql> select t1.name, t2.salary from employee t1, info t2 where t1.name = t2.name;
mysql> select college, region, seed from tournament
ORDER BY region, seed;
mysql> select college, region AS r, seed AS s from tournament
ORDER BY r, s;
mysql> select college, region, seed from tournament
ORDER BY 2, 3;
mysql> select col_name from tbl_name HAVING col_name > 0;
mysql> select col_name from tbl_name WHERE col_name > 0;
mysql> select user,max(salary) from users
group by user HAVING max(salary)>10;
mysql> select user,max(salary) AS sum from users
group by user HAVING sum>10;
mysql> select * from table LIMIT 5,10; # Retrieve rows 6-15
mysql> select * from table LIMIT 5; # Retrieve first 5 rows
在命令列下進行批次處理:
shell> mysql -h host -u user -p < batch-file Enter password: ******** pe Bytes From To TINYINT 1 -128 127 SMALLINT 2 -32768 32767 MEDIUMINT 3 -8388608 8388607 INT 4 -2147483648 2147483647 BIGINT 8 -9223372036854775808 9223372036854775807 Column type ``Zero'' value DATETIME '0000-00-00 00:00:00' DATE '0000-00-00' TIMESTAMP 00000000000000 (length depends on display size) TIME '00:00:00' YEAR 0000 Column type Display format TIMESTAMP(14) YYYYMMDDHHMMSS TIMESTAMP(12) YYMMDDHHMMSS TIMESTAMP(10) YYMMDDHHMM TIMESTAMP(8) YYYYMMDD TIMESTAMP(6) YYMMDD TIMESTAMP(4) YYMM TIMESTAMP(2) YY Type Max.size Bytes TINYTEXT or TINYBLOB 2^8-1 255 TEXT or BLOB 2^16-1 (64K-1) 65535 MEDIUMTEXT or MEDIUMBLOB 2^24-1 (16M-1) 16777215 LONGBLOB 2^32-1 (4G-1) 4294967295 Value CHAR(4) Storage required VARCHAR(4) Storage required '' ' ' 4 bytes '' 1 byte 'ab' 'ab ' 4 bytes 'ab' 3 bytes 'abcd' 'abcd' 4 bytes 'abcd' 5 bytes 'abcdefgh' 'abcd' 4 bytes 'abcd' 5 bytes Value Index NULL NULL "" 0 "one" 1 "two" 2 "three" 3 Other vendor type MySQL type BINARY(NUM) CHAR(NUM) BINARY CHAR VARYING(NUM) VARCHAR(NUM) FLOAT4 FLOAT FLOAT8 DOUBLE INT1 TINYINT INT2 SMALLINT INT3 MEDIUMINT INT4 INT INT8 BIGINT LONG VARBINARY MEDIUMBLOB LONG VARCHAR MEDIUMTEXT MIDDLEINT MEDIUMINT VARBINARY(NUM) VARCHAR(NUM) BINARY Column type Storage required TINYINT 1 byte SMALLINT 2 bytes MEDIUMINT 3 bytes INT 4 bytes INTEGER 4 bytes BIGINT 8 bytes FLOAT(X) 4 if X <= 24 or 8 if 25 <= X <= 53 FLOAT 4 bytes DOUBLE 8 bytes DOUBLE PRECISION 8 bytes REAL 8 bytes DECIMAL(M,D) M+2 bytes if D > 0, M+1 bytes if D = 0 (D+2, if M < D) NUMERIC(M,D) M+2 bytes if D > 0, M+1 bytes if D = 0 (D+2, if M < D)
Column type Storage required
DATE 3 bytes
DATETIME 8 bytes
TIMESTAMP 4 bytes
TIME 3 bytes
YEAR 1 byte
Column type Storage required
CHAR(M) M bytes, 1 <= M <= 255
VARCHAR(M) L+1 bytes, where L <= M and 1 <= M <= 255
TINYBLOB, TINYTEXT L+1 bytes, where L < 2^8
BLOB, TEXT L+2 bytes, where L < 2^16
MEDIUMBLOB, MEDIUMTEXT L+3 bytes, where L < 2^24
LONGBLOB, LONGTEXT L+4 bytes, where L < 2^32
ENUM('value1','value2',...) 1 or 2 bytes, depending on the number of enumeration values (65535 values maximum)
SET('value1','value2',...) 1, 2, 3, 4 or 8 bytes, depending on the number of set members (64 members maximum)
*/
//Install Apache24
cd /usr/ports/www/apache24
make install clean
//stop FreeBSD
#shutdown -h now
安裝 FreeBSD 9.0R
freebsd bsdinstall on google driver
安裝MySQL Apache PHP
KeyMap 選 NO
hostname: FreeBSD4EE.XXXX.com.tw
選
doc
ports
src
Auto (UFS)
Entire Disk
Archive Extraction.....
NewPassword__ 輸入密碼
Retype NewPassword__ 再次輸入密碼
Configure IPv4__
DHCP 選 NO
//Use static IP
IP Address__
Subnet Mask__
Default Router__
Configure IPv6 選 No
IPv4 DNS #1 168.95.1.1
IPv4 DNS #2 168.95.192.1
Set to UTC 選 No
Select a region
Asia
Taiwan
ntpd 自動校正時間,當使用port安裝軟體時,若時間不正確可能造成安裝錯誤
CST look reasonable
Yes
Add User 選 No //事後可用 #adduser 指令加
Documentation Installation
en
zh_tw
Choose Installation Media
FTP
Taiwan #11 ftp11.tw.freebsd.org
Documentation Installation.....
//too long to installation
Final Configuration
Exit
Manual Configuration
No
Complete
Reboot
Take out DVD
//IP Address on /etc/rc.conf
ee /etc/rc.conf
hostname="FreeBSD4EE.XXXX.com.tw"
keymap="hy.armscii-8.kbd"
ifconfig_em0="inet 61.XXX.XXX.XXX netmask 255.255.255.248"
defaultrouter="61.XXX.XXX.XXX"
sshd_enable="YES"
sendmail_enable="NONE"
//*修改putty ssh port 為443(原https用)*//
#ee /etc/ssh/sshd_config //注意 不是 "/etc/ssh/ssh_config"
找#port 22
改成port 443
改好後Run
kill -s HUP `cat /var/run/sshd.pid`
即可啟動 Port 443
//*for SU*//
#ee /etc/group
加上Wheel : root,XXXXXXXX
//*設PuTTy連線不中斷*//
- Open the PuTTy application and navigate to the Options panel.
- Load the session definition by selecting it from the list.
- Click Load
- Select Connection
- In the field Sending null packets to keep session active change the default value from 0 to 1800 (30 minutes)
- Check the Enable TCP keepalives (SO_KEEPALIVE option) check box.
Note: This option may not available in older versions of the PuTTY client. - Select Session from the left hand menu
- Select Save
//*修改預設登入語系為中文UTF-8編碼*//
#ee /etc/login.conf
//將
#russian|Russian Users Accounts:\
# :charset=KOI8-R:\
# :lang=ru_RU.KOI8-R:\
# :tc=default:
//加上"#"
//新增
taiwan|Taiwan Users Accounts:\
:charset=UTF-8:\
:lang=zh_TW.UTF-8:\
:tc=default:
//save
#cap_mkdb /etc/login.conf //更新系統記錄
#vipw -d /etc
username:$1$zZBn.ecS$yPoKbh7e0KrTVDZmfnMRs/:1001:1001:taiwan:0:0:System User:/home/username:/
bin/sh //加入taiwan
#ee /etc/adduser.conf
//加入_
defaultclass = taiwan
//save
# locale
//若出現
LANG=zh_TW.UTF-8
LC_CTYPE=”zh_TW.UTF-8″
LC_COLLATE=”zh_TW.UTF-8″
LC_TIME=”zh_TW.UTF-8″
LC_NUMERIC=”zh_TW.UTF-8″
LC_MONETARY=”zh_TW.UTF-8″
LC_MESSAGES=”zh_TW.UTF-8″
LC_ALL=
//表示正常
//所有使用者都要登入重新設定乙次
//Update ports 就是有些時候最新Ports反而安裝有問題耶~~~
//cd 至不同dir可只更新該dir下的ports 若在根目錄下指令則所有ports都更新 會花許多時間
#portsnap fetch && portsnap extract
//*使用 ports 安裝MySQL55軟體*//
#cd /usr/ports/databases/mysql55-server
#make search name="xxx" //找Port Name
#make install clean //編譯安裝並清除安裝檔案
....
ee /usr/local/etc/rc.d/mysql-server //看要設定哪些啟動選項
# Add the following line to /etc/rc.conf to enable mysql:
# mysql_enable (bool): Set to “NO” by default.
# Set it to “YES” to enable MySQL.
# mysql_limits (bool): Set to “NO” by default.
# Set it to yes to run `limits -e -U mysql`
# just before mysql starts.
# mysql_dbdir (str): Default to “/var/db/mysql”
# Base database directory.
# mysql_pidfile (str): Custum PID file path and name.
# Default to “${mysql_dbdir}/${hostname}.pid”.
# mysql_args (str): Custom additional arguments to be passed
# to mysqld_safe (default empty).
#ee /etc/rc.conf
hostname="XXX.XXX.XXX.tw"
ifconfig_em0="inet XXX.XXX.XXX.XXX netmask 255.255.255.248"
defaultrouter="XXX.XXX.XXX.XXX"
sshd_enable="YES"
ntpd_enable="NO"
dumpdev="NO"
sendmail_enable="NONE"
mysql_enable="YES" //開機mysql自動啟動,可用/usr/local/etc/rc.d/mysql-server start or stop 啟動mysql
mysql_dbdir="/home/mysql"” //設定mysql資料庫放在/home/mysql
/*
cp /boot/defaults/loader.conf /boot/loader.conf
#ee /boot/loader.conf
autoboot_delay="3"
//出現問題 ???
OK boot 按ENTER //即可重新開機
*/
#cd /home
#mkdir mysql
#chown -R mysql:mysql mysql //設定 "/home/mysql" 之權限給mysql帳號及mysql群組
#/usr/local/etc/rc.d/mysql-server start
# Starting mysql
#ps aux|grep mysql
mysql 44190 0.0 0.1 9924 1892 ?? Is 10:50下午 0:00.02 /bin/sh /usr/local/bin/mysqld_safe –defaults-extra-file
mysql 44273 0.0 2.1 199176 43864 ?? I 10:50下午 0:00.29 [mysqld]
root 44276 0.0 0.0 496 300 1 R+ 10:51下午 0:00.00 grep mysql
//
#mysql -u root -p
#Enter password: //直接按ENTER
//出現
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.22 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql> //正常
mysql>set password=password('XXXXXXXX'); //要加";"
Query OK, 0 rows affected (0.00 sec) //正常
mysql>exit //離開
#cp /usr/local/share/mysql/my-medium.cnf /usr/local/etc/my.cnf
#ee /usr/local/etc/my.cnf
/*
my-innodb-heavy-4G.cnf : 如果要做大型關聯式資料庫,還會用到transaction用這個吧。
my-huge.cnf: 適合 1GB – 2GB RAM的主機使用。
my-large.cnf: 適合 512MB RAM的主機使用。
my-medium.cnf: 只有 32MB – 64MB RAM 的主機使用,或者有 128MB RAM 但需要運行其他伺服器,例如 web server。
my-small.cnf: 記憶體少於 64MB 時適用這個,MySQL 會佔用較少資源。
*/
#ee /usr/local/etc/my.cnf
hread_concurrency = 8 //設定為CPU核心的兩倍
skip-networking //資料庫不透過網路連線
/*
項目 autoboot_delay="10"
簡介 這是可以讓您決定開機時要等待幾秒的時間來設定開機時的參數,這在初安裝完系統後的 /etc/rc.conf 檔案中是不存在的。如果您很介意開機的速度,您需要手動將它建立。若未設定此值,系統預設是等待 10 秒鐘。
項目 defaultrouter="xxx.xxx.xxx.xxx"
簡介 設定預設的通訊匣 (geteway) 位址。
如果主機不是採用撥接方式來連結網路或主機不是要拿來做通訊匣用的話,通常您是需要設定的。
如︰defaultrouter="192.168.168.1"
項目 gateway_enable="YES"
簡介 是否啟用封包轉送 (IP forwarding) 功能。
主機打算做 router/gateway 時才需要。通常啟用時,defaultrouter 設定值是不需設定的。
可用參數︰YES / NO
項目 hostname="www.mycorp.com"
簡介 設定主機名稱。
預設是主機的完整網域名稱,如︰www.mycorp.com
您可以只輸入主機名稱,如︰www
此設定參數是沒有預設值的,需由您來指定
如果要改變主機名稱 (三思而後行),也是在此變更即可。
項目 network_interfaces="rl0 ed0 lo0"
簡介 設定您的網路介面。
預設值為 auto。
通常此設定無需指定,您可以刪除或註解掉它 -- 如果您在 /etc/rc.conf 看見此設定的話。
然如果您有某網路介面想短期間不啟動,您需於此設定要啟動使用的網路介面名稱。
項目 ifconfig_lo0="inet 127.0.0.1"
簡介 遞迴裝置 (loopback)。
這是個虛擬出來的網路介面,讓您可以連線到主機本身。
通常您只會在 /etc/defaults/rc.conf 中看到它,您無需去改變它的設定。
項目 ifconfig_zzY="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"
簡介 設定網路介面的 IP 位址與網路遮罩等等。
其中 zz 為裝置介面的名稱;Y 為該裝置的編號;xxx 為 IP 的數值;inet 為網路位址 (Internet address),即所謂的 IP 位址;netmask 為網路遮罩。
如︰ifconfig_ed0="inet 192.168.168.1 netmask 255.255.255.0"
如果您的網路中有 DHCP,且想讓此網路介面經由 DHCP 來抓取設定值,可用 ifconfig_zzY="DHCP" 設定它。如︰ifconfig_ed0="DHCP"
項目 ifconfig_zzY_aliasxY="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"
簡介 設定網路介面 zzY 的 IP Alias。
如果您想讓同一個網路介面使用一個以上的 IP 位址,您就會需要了解此設定。
ifconfig_zzY_aliasY 與 ifconfig_zzY 的設定方式是相同的,不過不能使用 DHCP 參數。
範例︰
ifconfig_rl0="inet 192.168.168.1 netmask 255.255.255.0"
ifconfig_rl0_alias0="inet 192.168.168.254 netmask 0xffffffff"
ifconfig_rl0_alias1="inet 192.168.169.1 netmask 255.255.255.240
ifconfig_rl0_alias2="inet 192.168.169.15 netmask 255.255.255.255
0xffffffff 為 255.255.255.255 的十六進位表示值。
這兒有兩點要注意的︰
IP alias 必須由 alias0 依序遞增(alias0,alias1,........,alias9,.....aliasxx),若是中間有所跳號時,系統在配置網卡 IP address 時,將會停在第一個跳號的所在。
若要為同一塊網卡額外添加同一 subnet 的 IP address 時,則需為此額外添加的 IP address 指定一不相衝突的 netmask,而通常 0xffffffff 是最適用的了。
請詳細比對上述範例中的差異,應可明瞭於心!!
項目 kern_securelevel="-1"
簡介 設定系統安全等級。
預設值為 -1;最大值為 3
-1 => 非安全模式。效用等於 0
0 => 非安全模式。具『不可移除』與『只能附加』的旗標屬性 (flags) 可以被設定者或 root 移除;所有的裝置 (device) 其讀取、寫入動作將取決於本身的權限設定。
1 => 安全模式。具『不可移除』與『只能附加』的 flags 無法被移除;/dev/mem 、/dev/kmem 只能唯讀;硬碟中已掛載的檔案系統無法再 newfs;核心模組無法動態載入或卸載。
2 => 高度安全模式。除了「安全模式」的限制之外,硬碟無論掛載與否皆無法再 newfs。為了預防入侵者先行卸載硬碟後再將它給 newfs 摧毀硬碟內容。此模式下您也無法再加裝任何硬碟給系統。
3 => 網路安全模式。除了「高度安全模式」的限制之外,IP 封包過濾規則無法再變更且頻寬控管 (dummynet) 等功能將無法使用。
需 kern_securelevel_enable 設定為 YES 才有作用。
項目 kern_securelevel_enable="YES"
簡介 設定為 YES 將會在系統啟動時設依據 kern_securelevel 中的設定值來設定系統安全等級。
可用參數︰YES / NO
項目 local_startup="/usr/local/etc/rc.d /usr/X11R6/etc/rc.d"
簡介 設定啟動目錄。
如果有程式想在一開機時就自動執行,以往是寫在 /etc/rc.local 檔案中;現在可以將這些程式的執行動作寫成 shell 指令稿 (shell script),放在 local_startup 所指定的目錄下,日後維護與偵錯時皆相當方便。
項目 ntpdate_enable="YES"
簡介 設定開機後執行系統時間校時。
可用參數︰YES / NO
項目 ntpdate_flags="clock.stdtime.gov.tw"
簡介 設定系統時間要以哪部主機來做標準時間校時。
請選您可信任、距離近、頻寬足的主機來做校時。
項目 sshd_enable="YES"
簡介 OpenSSH SSH daemon
telnet 的安全性頗受爭議,如果您沒有提供 telnet 的必需性的話,請將它設為 YES 來替代 telnet 吧。
項目 inetd_enable="YES"
簡介 Internet super-server
這通常是需要的,特別是在您的主機打算用來提供網路服務時。
相關的網路服務設定檔在 /etc/inetd.conf
*/
//DNS on /etc/resolv.conf
ee /etc/resolv.conf
nameserver 168.95.1.1
nameserver 168.95.192.1
// Install MySQL 56 server
# cd /usr/ports
# cd databases
# ls
# cd mysql56-server
# make install clean
Enable Babel extension
install examples
OK
ee /etc/rc.conf
mysql_enable="YES"
or
# /usr/local/etc/rc.d/mysql-server start
//Apache+MySQL+PHP install
//http://bbs.chinaunix.net/thread-4160859-1-1.html
//http://neroli.pixnet.net/blog/post/32287589-%5Bfreebsd%5D-apache%2Bphp%2Bmysql%E5%AE%89%E8%A3%9D%E8%88%87%E8%A8%AD%E5%AE%9A
//用Ports安裝Apache+PHP+MySQL
//http://ausz1219.blogspot.tw/2013/12/freebsdportsapachephpmysql.html
//MySQL 超新手入門(17)查詢
//http://www.codedata.com.tw/database/mysql-tutorial-17-information_schema/
//【FreeBSD】用 Ports 安裝 Apache + PHP + MySQL
//http://bojack.pixnet.net/blog/post/12983723-%E3%80%90freebsd%E3%80%91%E7%94%A8-ports-%E5%AE%89%E8%A3%9D-apache-%2B-php-%2B-mysql
//FreeBSD MySQL
//http://www.study-area.org/2freebsd/server/www/mysql.htm#03
/*
設定 root 和其他 user 的密碼
mysqladmin -u root password '新密碼'
mysqladmin -u root -p
Enter password: 此時再輸入密碼(建議採用)
use mysql;
mysql> UPDATE user SET password=password('新密碼') where user='root';
只改 root 的密碼,如果沒有用 where ,則表示改全部 user 的密碼
mysql> FLUSH PRIVILEGES; 在 mysql 資料庫內,一定要用 flush 更新記憶體上的資料
刪除空帳號
mysql> DELETE FROM user WHERE User = '';
mysql> FLUSH PRIVILEGES;
建立新帳號
mysql> GRANT 權限 ON 資料庫或資料表 TO 使用者 IDENTIFIED BY '密碼';
權限
資料庫或資料表
*.* 所有資料庫裡的所有資料表
* 預設資料庫裡的所有資料表
資料庫.* 某一資料庫裡的所有資料表
資料庫.資料表 某一資料庫裡的特定資料表
資料表 預設資料庫裡的某一資料表
設定/修改權限
用 root 登入 MySQL
mysqladmin -u root -p
Enter password:
mysql> GRANT all ON db35.* TO s35@'localhost' IDENTIFIED BY 's35';
把 db35 這個資料庫(含其下的所有資料表),授權給 s35,從 localhost 上來,密碼為s35
mysql> GRANT all ON *.* 把所有資料庫及資料表授權給別人,太危險了!
mysql> GRANT all??? ON www.* TO '*'@'*' IDENTIFIED BY '';
把 www 這個資料庫(含其下的所有資料表),授權給 任何機器任何人,無密碼(通常給不特定人士使用)
mysql> FLUSH PRIVILEGES; (最後一定要強迫更新權限)
二、資料庫/資料表/欄位的操作
建立資料庫 CREATE DATABASE 資料庫名;
語法:CREATE DATABASE db_name
使用資料庫 USE 資料庫名;
語法:USE db_name
刪除資料庫 DROP DATABASE 資料庫名;
語法:DROP DATABASE [IF EXISTS] db_name
建立資料表
CREATE TABLE 資料表名 (欄位1 資料型態, 欄位2 資料型態, ......);
語法:
CREATE TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options] [select_statement]
例:
craete database basic;
use basic;
create table basic(
no char(4)
name char(10)
id char(10));
create_definition:
col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
[PRIMARY KEY] [reference_definition]
or PRIMARY KEY (index_col_name,...)
or KEY [index_name] KEY(index_col_name,...)
or INDEX [index_name] (index_col_name,...)
or UNIQUE [INDEX] [index_name] (index_col_name,...)
or [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name,...)
[reference_definition]
or CHECK (expr)
資料結構(type):
資料型態 說明
TINYINT 有符號的範圍是-128到127, 無符號的範圍是0到255。
SMALLINT 有符號的範圍是-32768到32767, 無符號的範圍是0到65535。
MEDIUMINT 有符號的範圍是-8388608到8388607, 無符號的範圍是0到16777215。
INT 有符號的範圍是-2147483648到2147483647, 無符號的範圍是0到4294967295。
INTEGER INT的同義詞。
BIGINT 有符號的範圍是-9223372036854775808到 9223372036854775807,無符號的範圍是0到18446744073709551615。
FLOAT 單精密浮點數字。不能無符號。允許的值是-3.402823466E+38到- 1.175494351E-38,0 和1.175494351E-38到3.402823466E+38。
DOUBLE 雙精密)浮點數字。不能無符號。允許的值是- 1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308。
DOUBLE PRECISION DOUBLE的同義詞。
REAL DOUBLE的同義詞。
DECIMAL DECIMAL值的最大範圍與DOUBLE相 同。
NUMERIC DECIMAL的同義詞。
DATE 日期。支援的範圍是'1000-01-01'到'9999-12-31'。
DATETIME 日期和時間組合。支援的範圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'
TIMESTAMP 時間戳記。範圍是'1970-01-01 00:00:00'到2037年的某時。
TIME 一個時間。範圍是'-838:59:59'到'838:59:59'。
YEAR 2或4位數字格式的年(內定是4位)。允許的值是1901到2155。
CHAR 固定長度,1 ~ 255個字元。
VARCHAR 可變長度,1 ~ 255個字元。
TINYBLOB
TINYTEXT 最大長度為255(2^8-1)個字符。
MEDIUMBLOB
MEDIUMTEXT 最大長度為16777215(2^24-1)個字符。
LONGBLOB
LONGTEXT 最大長度為4294967295(2^32-1)個字符。
ENUM 一個ENUM最多能有65535不同的值。
SET 一個SET最多能有64個成員。
index_col_name:
col_name [(length)]
reference_definition:
REFERENCES tbl_name [(index_col_name,...)]
[MATCH FULL | MATCH PARTIAL]
[ON DELETE reference_option]
[ON UPDATE reference_option]
reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
table_options:
type = [ISAM | MYISAM | HEAP]
or max_rows = #
or min_rows = #
or avg_row_length = #
or comment = "string"
or auto_increment = #
select_statement:
[ | IGNORE | REPLACE] SELECT ... (Some legal select statement)
刪除資料表 DROP TABLE 資料表名;
語法:DROP TABLE [IF EXISTS] tbl_name [, tbl_name,...]
改變資料表結構(新增/刪除欄位、建立/取消索引、改變欄位資料型態、欄位重新命 名)
語法:
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...]
alter_specification:
ADD [COLUMN] create_definition [FIRST | AFTER column_name ]
or ADD INDEX [index_name] (index_col_name,...)
or ADD PRIMARY KEY (index_col_name,...)
or ADD UNIQUE [index_name] (index_col_name,...)
or ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
or CHANGE [COLUMN] old_col_name create_definition
or MODIFY [COLUMN] create_definition
or DROP [COLUMN] col_name
or DROP PRIMARY KEY
or DROP INDEX key_name
or RENAME [AS] new_tbl_name
or table_option
範例:
欄位重新命名
mysql> ALTER TABLE t1 CHANGE a b INTEGER;
將資料表 t1 欄位 a 改名為 b (其資料型態是 integer)
改變欄位資料型態
mysql> ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;
mysql> ALTER TABLE t1 MODIFY b BIGINT NOT NULL;
將資料表 t1 欄位 b 的資料型態改為 bigint not null
mysql> CREATE TABLE t1 (a INTEGER,b CHAR(10));
mysql> ALTER TABLE t1 RENAME t2;
將資料表 t1 改名為 t2
mysql> ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);
將資料表 t2 欄位 a 資料型態由 integer 改為 tinyint not null ,欄位 b 改名為 c 資料型態改為 char(20)
mysql> ALTER TABLE t2 ADD d TIMESTAMP;
在資料表 t2 增加新欄位 d 資料型態是 timestamp
mysql> ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);
在資料表 t2 ,對 d 欄位做索引,並以欄位 a 作為主索引鍵
mysql> ALTER TABLE t2 DROP COLUMN c;
刪除欄位 c
mysql> ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD INDEX (c);
新增欄位 c,並做索引(做索引的欄位必須為 not null )
資料表最佳化 OPTIMIZE TABLE 資料表名
語法:OPTIMIZE TABLE tbl_name
欄位長度有變動、刪除大量資料,都應進行資料表最佳化
三、紀錄的操作
插入一筆或多筆紀錄 INSERT INTO 資料表(欄位1,欄位2,......) VALUES(值1,值2,......), (值1,值2,......), ........
(MySQL 3.22.5 以後可插入多筆記錄)
語法:
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES (expression,...),(...),...
or INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
or INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name
SET col_name=expression, col_name=expression, ...
範例:
mysql> INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);
不可寫成
mysql> INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15);
因為:欄位 col1 的值先填入後,才可以計算欄位 col2
從檔案讀入資料
語法:
LOAD DATA [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE]
INTO TABLE tbl_name
[FIELDS
[TERMINATED BY '\t'] 每一欄位以某字元分開(內定是 tab)
[OPTIONALLY] ENCLOSED BY "] 每一欄位以某字元括住(內定是不使用括號)
[ESCAPED BY '\\' ]]
[LINES TERMINATED BY '\n'] 設定換行的字元(內 定是 \n)
[IGNORE number LINES] 忽略最前面幾行(最前面幾筆記錄不抄進來)
[(col_name,...)]
範例:
mysql> USE db1;
mysql> LOAD DATA INFILE "./data.txt" INTO TABLE db2.my_table;
從目前 MySQL 目錄讀入 data.txt
mysql> LOAD DATA INFILE "./88.txt" INTO TABLE TEACHER FIELDS TERMINATED BY ' ' ;
從目前 MySQL 目錄(我的在 /var/lib/mysql )讀入 data.txt ,每一欄位以 空白 分開
mysql> LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata (col1,col2,...);
只將 persondata.txt 裡某些欄位的資料抓過來
刪除紀錄 DELETE [LOW-PRIORITY] FROM 資料表名 WHERE 條件 [LIMIT rows]
語法:
DELETE [LOW_PRIORITY] FROM tbl_name
[WHERE where_definition] [LIMIT rows]
LOW-PRIORITY 是等到沒有用戶端使用時再刪
LIMIT rows 限制刪除紀錄的筆數
範例:
mysql> DELETE FROM 資料表名;
刪除所有紀錄
mysql> DELETE FROM 資料表名 WHERE 1>0;
刪除所有紀錄,但速度較慢,方便在螢幕上看
更新一筆紀錄 (語法與 INSERT 相同)
REPLACE INTO 資料表(欄位1,欄位2,......) VALUES(值1,值2,......)
語法:
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
VALUES (expression,...)
or REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
SELECT ...
or REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name
SET col_name=expression, col_name=expression,...
更新多筆紀錄
語法:
UPDATE [LOW_PRIORITY] tbl_name SET col_name1=expr1,col_name2=expr2,... [WHERE where_definition]
如果沒有設定 WHERE 條件,則整個資料表相關的欄位都更新
範例:
mysql> UPDATE persondata SET age=age+1;
將資料表 persondata 中,所有 age 欄位都加 1
mysql> UPDATE persondata SET age=age*2, age=age+1;
將資料表 persondata 中,所有 age 欄位都*2,再加 1
四、資料的輸出
SELECT
語法:
SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [DISTINCT | ALL]
select_expression,...
[INTO OUTFILE 'file_name' export_options]
[FROM table_references
[WHERE where_definition]
[GROUP BY col_name,...]
[HAVING where_definition]
[ORDER BY {unsigned_integer | col_name} [ASC | DESC] ,...]
[LIMIT [offset,] rows]
[PROCEDURE procedure_name] ]
範例:
排序輸出
select * from 資料表名 order by 欄位名1,欄位名2,欄位名3......
反向排序輸出
select * from 資料表名 order by 欄位名1,欄位名2,欄位名3...... desc
mysql> select concat(last_name,', ',first_name) AS full_name
from mytable ORDER BY full_name;
mysql> select t1.name, t2.salary from employee AS t1, info AS t2
where t1.name = t2.name;
顯示資料庫 employee(別名 t1) 裡,資料表 t1 的欄位 name 和 資料表 t2 的欄位 salary 當.....
mysql> select t1.name, t2.salary from employee t1, info t2 where t1.name = t2.name;
mysql> select college, region, seed from tournament
ORDER BY region, seed;
mysql> select college, region AS r, seed AS s from tournament
ORDER BY r, s;
mysql> select college, region, seed from tournament
ORDER BY 2, 3;
mysql> select col_name from tbl_name HAVING col_name > 0;
mysql> select col_name from tbl_name WHERE col_name > 0;
mysql> select user,max(salary) from users
group by user HAVING max(salary)>10;
mysql> select user,max(salary) AS sum from users
group by user HAVING sum>10;
mysql> select * from table LIMIT 5,10; # Retrieve rows 6-15
mysql> select * from table LIMIT 5; # Retrieve first 5 rows
在命令列下進行批次處理:
shell> mysql -h host -u user -p < batch-file Enter password: ******** pe Bytes From To TINYINT 1 -128 127 SMALLINT 2 -32768 32767 MEDIUMINT 3 -8388608 8388607 INT 4 -2147483648 2147483647 BIGINT 8 -9223372036854775808 9223372036854775807 Column type ``Zero'' value DATETIME '0000-00-00 00:00:00' DATE '0000-00-00' TIMESTAMP 00000000000000 (length depends on display size) TIME '00:00:00' YEAR 0000 Column type Display format TIMESTAMP(14) YYYYMMDDHHMMSS TIMESTAMP(12) YYMMDDHHMMSS TIMESTAMP(10) YYMMDDHHMM TIMESTAMP(8) YYYYMMDD TIMESTAMP(6) YYMMDD TIMESTAMP(4) YYMM TIMESTAMP(2) YY Type Max.size Bytes TINYTEXT or TINYBLOB 2^8-1 255 TEXT or BLOB 2^16-1 (64K-1) 65535 MEDIUMTEXT or MEDIUMBLOB 2^24-1 (16M-1) 16777215 LONGBLOB 2^32-1 (4G-1) 4294967295 Value CHAR(4) Storage required VARCHAR(4) Storage required '' ' ' 4 bytes '' 1 byte 'ab' 'ab ' 4 bytes 'ab' 3 bytes 'abcd' 'abcd' 4 bytes 'abcd' 5 bytes 'abcdefgh' 'abcd' 4 bytes 'abcd' 5 bytes Value Index NULL NULL "" 0 "one" 1 "two" 2 "three" 3 Other vendor type MySQL type BINARY(NUM) CHAR(NUM) BINARY CHAR VARYING(NUM) VARCHAR(NUM) FLOAT4 FLOAT FLOAT8 DOUBLE INT1 TINYINT INT2 SMALLINT INT3 MEDIUMINT INT4 INT INT8 BIGINT LONG VARBINARY MEDIUMBLOB LONG VARCHAR MEDIUMTEXT MIDDLEINT MEDIUMINT VARBINARY(NUM) VARCHAR(NUM) BINARY Column type Storage required TINYINT 1 byte SMALLINT 2 bytes MEDIUMINT 3 bytes INT 4 bytes INTEGER 4 bytes BIGINT 8 bytes FLOAT(X) 4 if X <= 24 or 8 if 25 <= X <= 53 FLOAT 4 bytes DOUBLE 8 bytes DOUBLE PRECISION 8 bytes REAL 8 bytes DECIMAL(M,D) M+2 bytes if D > 0, M+1 bytes if D = 0 (D+2, if M < D) NUMERIC(M,D) M+2 bytes if D > 0, M+1 bytes if D = 0 (D+2, if M < D)
Column type Storage required
DATE 3 bytes
DATETIME 8 bytes
TIMESTAMP 4 bytes
TIME 3 bytes
YEAR 1 byte
Column type Storage required
CHAR(M) M bytes, 1 <= M <= 255
VARCHAR(M) L+1 bytes, where L <= M and 1 <= M <= 255
TINYBLOB, TINYTEXT L+1 bytes, where L < 2^8
BLOB, TEXT L+2 bytes, where L < 2^16
MEDIUMBLOB, MEDIUMTEXT L+3 bytes, where L < 2^24
LONGBLOB, LONGTEXT L+4 bytes, where L < 2^32
ENUM('value1','value2',...) 1 or 2 bytes, depending on the number of enumeration values (65535 values maximum)
SET('value1','value2',...) 1, 2, 3, 4 or 8 bytes, depending on the number of set members (64 members maximum)
*/
//Install Apache24
cd /usr/ports/www/apache24
make install clean
//stop FreeBSD
#shutdown -h now
訂閱:
文章 (Atom)