反正常遇到,不如寫下做個紀錄,以後直接複製貼上。
整個重點在於-p和密碼中間有沒有空格。當有空格時,mysql是使用互動式,要你填入密碼;如果沒有空格,mysql就直接使用-p後面的字串來登入。
指令:
$ mysql -h Server_name -u your_account -pPassword database_name < file.sql
mark528 發表在 痞客邦 留言(0) 人氣(552)
原本是眾家 Linux 預設採用的 Database ,現在卻紛紛被拋棄,Oxxxxe 堪稱開源界的殺手,Java 和 MySQL 都中招了。
Mageia 2(原 Mandriva 社區衍生版)和 OpenSUSE 12.3 以後版本開了第一槍,Fedora 社區也宣佈將會在即將發佈的 Fedora 19 使用 MariaDB 替代 MySQL。
MariaDB 是原 MySQL 創始人 Michael 'Monty' Widenius 建立的一個 MySQL 社區分支,為避免 MySQL 落入 Oracle 收購後存在的閉源風險,同時提供更多特性及更強的性能。
MariaDB 最新穩定版本為 5.5.29,開發版本為 10.0.1 Alpha。MariaDB 10.0 依然基於 MySQL 5.5 開發,但會引入 MySQL 5.6 部分特性。
MariaDB 提供以下特性:
•XtraDB 替換 InnoDB,XtraDB 是 Percona 開發維護的 InnoDB 威力加強版,整合 Google、Facebook 等公司和 MySQL 社區的補丁。
•Aria 存儲引擎和 Sphinx 存儲引擎
•基於 Gelera Cluster 的 MariaDB 集群方案
•多主複製(將在 MariaDB 10.0 實現,由淘寶貢獻)
•Cassandra 存儲引擎(將在 MariaDB 10.0 實現)
mark528 發表在 痞客邦 留言(0) 人氣(277)
MySQL 是套開放原始碼的軟體,開放原始碼並不代表免費,雖然很多企業並不在意,總是抱著不會被抓的心態,但是工程師還是要懂得保護自己,不然工作久了,回首時,會發現背後的鍋子還真多....
MySQL 採用雙授權機制:商業授權和 GNU 通用公共許可證(GPL,GNU General Public License)。就因為這樣,常常讓我納悶,那到底什麼情況下才可以免費使用??
根據MySQL官方的商業許可的相關說明,在下列情況下,可以免費使用MySQL:
1. 應用程式是在GPL許可下發佈的;(開放你的軟體原始碼??)
2. 應用程式不用於分發。(關起門來自己用,不可以拿出去賣錢)
3. 非營利組織可以申請免費商業許可,但 MySQL 會carefully considered
也就是說,使用 MySQL 一定要有授權後才可以合法使用,不然就只能關起門在自家用。
mark528 發表在 痞客邦 留言(0) 人氣(666)

說到MySQL管理工具,phpMyAdmin是免費及最常用的工具了,由PHP寫成,所有資料庫管理、備份、回存、SQL操作都可以由此工具完成。
安裝 phpMyAdmin
1. 請至官方網站下載最新版本。
2. 將下載的檔案解壓縮至WEBROOT目錄(D:\WebServer\wwwroot)。
3. 複製config.sample.inc.php成config.inc.php。
4. 修改config.inc.php
$cfg['Servers'][$i]['auth_type'] = 'http'; /* cookie改成http */
$cfg['Servers'][$i]['AllowNoPassword'] = true; /*要改成true,因為MySQL root預設為空白 */
5. 輸入 http://localhost:8081/phpmyadmin/index.php ,就可以進入phpmyadmin來管理MySQL了。
雖然順利登入了,網頁畫面往下拉,phpmyadmin會把現有的問題顯示出來。
A. 有新的phpmyadmin可用,請考慮升級。
這不是太大的問題,要更新時到官方網站下載新版本就行了,往後常會遇到,千萬記得備份你的config.inc.php檔案。
B. phpmyadmin高級功能未全部設置,部分功能不可用。
解決方式都可以在PmaWiki找到
a. 新增control user
GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
GRANT SELECT (
Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
Execute_priv, Repl_slave_priv, Repl_client_priv
) ON mysql.user TO 'pma'@'localhost';
GRANT SELECT ON mysql.db TO 'pma'@'localhost';
GRANT SELECT ON mysql.host TO 'pma'@'localhost';
GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
b. 執行create_tables.sql,檔案位於phpMyAdmin\scripts目錄下。
c. 授與權限
GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost';
d. 修改config.inc.php,把以下設定前面//都拿掉就可以了
/* User used to manipulate with storage */
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';
/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
$cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
e. 記得重啟apache來讓設定生效,重啟是最保險的方式。
Note:執行完create_tables.sql 還一直顯示有問題,請清session file
C. 您配製文件中的配置(空密碼的root)... ,主要說沒設置密碼容易被入侵,請設置密碼。
照以前的版本,應該是蠻容易完成一件事,可是試了最近的幾個版本,都一直無效。
從一般設定/修改密碼去設定完成後,我用mysqladmin去驗證,一樣還是不需要密碼,就可以登入了,不管是用MySQL 4.0或MySQL 4.1x的加密方式,就是無效。就只好用mysql本身提供的工具來完成這件事了。
D:\WebServer\mysql\bin>mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.5.14-log MySQL Community Server (GPL)
Copyright (c) 2000, 2010, 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>use mysql; (切換資料庫)
Database changed
mysql> update user set password=password('yourpasswordhere') where user='root'; (更新密碼)
Query OK, 0 rows affected (0.01 sec)
Rows matched: 3 Changed: 0 Warnings: 0
mysql> DELETE FROM user WHERE User=''; (刪除空帳號,維護系統安全)
Query OK, 1 row affected (0.00 sec)
mysql> FLUSH PRIVILEGES; (即時更新上面設定)
Query OK, 0 rows affected (0.00 sec)
mysql> quit;
Bye
D. 你的PHP MySQL 版本和 MySQL伺服器版本不合。
基本上不用太擔心這個,PHP預設是5.x版,已經夠使用了。
這時你的phpmyadmin基本上應該都是頭好壯壯,沒其他大問題。
其他常見問題
1. 正體中文
新出的版本都沒有正體中文,所以當phpmyadmin再抓OS預設語言時,就會以簡體中文顯示,這時就算你將config.inc.php檔案中的預設語言改成 $cfg['DefaultLang'] = 'zh_TW' 一樣不會有任何作用,請至網站下載(ok 3.4.2) Traditional Chinese translation for 3.4.x,並將下載回來的檔案放置WebROOT底下phpMyAdmin\locale\zh_TW\LC_MESSAGES目錄中。
2. 使用cookie方式登入時,常會出現下圖錯誤。
mark528 發表在 痞客邦 留言(1) 人氣(120,325)
說到MySQL的管理工具,腦裡就浮現了phpMyAdmin,這應該是被拿來管理MySQL的最常用工具了,但其實MySQL本身就有提供蠻好用的管理程式:mysqladmin.exe,但因為是命令列互動式,最後大家還是會選擇有UI介面的,畢竟操作方面才是最重要的。
其實不管是哪個資料庫都會提供這類指令互動程式來操作資料庫,因為資訊保密的重要,最後常常要面對的環境就是一個console介面而已,平常的練習和熟悉指令看來還是必須的。
那就實際來操作一遍mysqladmin.exe吧。
打開一個DOS視窗後,切換到存放MySQL應用程式的資料夾。
以下粗體為實際指令,{}包起來的內容是說明。
D:\WebServer\mysql\bin>mysql -h 127.0.0.1 -u root -p (本行指令:應用程式名稱、指定伺服器、伺服器名稱/網紙、指定使用者、使用者名稱、指定資料庫)
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.14-log MySQL Community Server (GPL)
Copyright (c) 2000, 2010, 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> show databases; {察看目前擁有的資料庫清單}
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.08 sec)
mysql> Select user(); {顯示目前擁有的使用者清單}
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.03 sec)
mysql> use test; {選擇要進行操作的資料庫}
Database changed
mysql> show tables; {顯示資料庫test的資料表清單}
Empty set (0.06 sec)
mysql> create table UsrData (
-> Id int,
-> FirstName varchar(20),
-> LastName varchar(20)); {建立一個資料表}
Query OK, 0 rows affected (0.11 sec)
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| usrdata |
+----------------+
1 row in set (0.00 sec)
mysql> desc usrdata; {檢視資料表usrdata的欄位定義}
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| Id | int(11) | YES | | NULL | |
| FirstName | varchar(20) | YES | | NULL | |
| LastName | varchar(20) | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
3 rows in set (0.06 sec)
mysql> insert into usrdata (Id, FirstName, LastName)
-> values (0, 'Java', 'Sun');
Query OK, 1 row affected (0.03 sec)
mysql> insert into usrdata (Id, firstname, lastname)
-> values (1, 'java', 'oracle');
Query OK, 1 row affected (0.01 sec)
mysql> select * from usrdata;
+------+-----------+----------+
| Id | FirstName | LastName |
+------+-----------+----------+
| 0 | Java | Sun |
| 1 | java | oracle |
+------+-----------+----------+
2 rows in set (0.03 sec)
mysql> select firstname, lastname from usrdata;
+-----------+----------+
| firstname | lastname |
+-----------+----------+
| Java | Sun |
| java | oracle |
+-----------+----------+
2 rows in set (0.00 sec)
mysql> quit; {離開}
Bye
mark528 發表在 痞客邦 留言(2) 人氣(3,677)
不常用的東西,果然會忘記,今天剛好有人問起如何將多欄位查詢結果合併成一個字串,努力回想下,想起來了,果然可以,順便做一下紀錄,當作備忘。
測試資料:
Table: usrdata
Field: id, firstname, lastname
Data: 0,'Java','Sun' ; 1, 'java','oracle'
Oracle Database:
SQL> SELECT firstname||lastname FROM USRDATA;
firstname||lastname
-----------------------------
JavaSun
javaoracle
看起來在Oracle環境下是可行的。朋友使用的資料庫為PostgreSQL,驗證也是可行的。
本來事情已解決,但是空閒下來時,就想說MySQL也來試試看,結果....失敗了...
mysql> select firstname||lastname from usrdata;
firstname||lastname
---------------------
0
0
查了一下MySQL手冊(http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat)
mysql> select concat(firstname, lastname) from usrdata;
concat(firstname, lastname)
-----------------------------
JavaSun
javaoracle
嘿嘿,解決了,繼續來驗證微軟的資料庫(SQL Server, access),沒記錯的話,關鍵字是(&)
select firstname & lastname from usrdata;
firstname & lastname
-----------------------------
JavaSun
javaoracle
總結:
每個資料庫在執行SQL語法時,字串連結的處理都不太一樣。
Oracle和PostgreSQL使用符號(||)。
MySQL使用CONCAT(col1, col2, ...)。
SQL Server使用符號(&)。
mark528 發表在 痞客邦 留言(1) 人氣(34,583)
MySQL一直是深受大家喜愛的資料庫軟體,看著官方網站最底下的紅色字logo真的是感慨萬千,兩大Open Source軟體被其收購後的發展,真的是一切盡在無言中了.....
簡單記錄一下如何在Windows安裝MySQL
1. 首先至官方網站(
http://www.mysql.com/downloads/)下載自己所需的版本;此時下載到最新手動安裝版本為mysql-5.5.14-win32.zip。
2. 將下載的檔案解壓縮到規劃的目錄。我是放到D:\WebServer\mysql。
3. 將D:\WebServer\mysql\底下任何一個my-XXX.ini複製成my.ini。
4. 修改my.ini設定。
找到 socket = /tmp/mysql.sock
修改成 socket = D:/WebServer/temp/mysql.sock
有兩個區段,在[client]和[mysqld]裡,都要修改。
在[mysqld]下一行加入
basedir = "d:/WebServer/mysql"
datadir = "d:/WebServer/mysql/data"
5. 新增mysql為服務,打開DOS視窗,將路徑切換到d:\WebServer\mysql\bin後,輸入
mysqld --install
註:當往後要移除服務時,請使用 mysqld –remove 。
6. 透過Windows系統管理工具中的服務來起動mysql。
7. 可用下列指令來驗證安裝結果。
mysqlshow
mysqlshow –u root mysql
mysqladmin version status proc
mysql test
參考文件來源:MySQL 5.5 Manual(
http://dev.mysql.com/doc/refman/5.5/en/windows-install-archive.html)
mark528 發表在 痞客邦 留言(0) 人氣(10,920)