目前分類:資料庫 (18)

瀏覽方式: 標題列表 簡短摘要

今晚將 MySQL 5.7 裝了起來,但無法像以前一樣用 root 身份登入進去修改密碼

發現原來是要先取得一組臨時密碼後才能登入使用,簡單說明一下

1. 先按照以前的指令登入

# mysql -u root -p (按Enter)

Enter password: (直接按Enter)

這時會得到 Access denied 的錯誤訊息,不過這是正常的

2. 切換到家目錄找臨時密碼

# cd ~

# cat .mysql_secret

這時應該就可以發現有一組看起來蠻複雜的臨時密碼,請把它複製下來

3. 重新登入 MySQL 並重設密碼

# mysql -u root -p (按Enter)

Enter password: (貼上剛才的新密碼)

這時應該就登入成功了,最後我們再來重設一下資料庫密碼就完工了

root@localhost > ALERT USER 'root'@'localhost' IDENTIFIED BY '新密碼';

以上就是 MySQL 5.7 安裝好之後重新修改密碼的方法囉 !

Bojack 發表在 痞客邦 留言(0) 人氣()

閱讀此文章前建議請先看這篇【資料庫】從 MySQL 4.0 Big5 編碼資料庫升級到 MySQL 4.1 Big5 編碼資料庫

上一篇是在說如何將 4.0 以 Big5 編碼的 DB 轉匯到 4.1 同樣以 Big5 編碼的方法

但是用 UTF-8 編碼是現在的趨勢了,也比較不會有字元爛掉的問題

這一篇教學算是承上,原則上 MySQL 的環境都不變

首先我們一樣要先新建資料庫,這次就要改用 UTF-8 來編碼

Bojack 發表在 痞客邦 留言(0) 人氣()

近來協助老師將以前的網站移轉到新機器,先描述一下歷史故事

以往升級 MySQL 時就是直接把 MySQL DB 內實體檔案 copy 到對應的目錄內,沒有用 phpMyAdmin or mysqldump 這二種方法

而這種方法在 MySQL 3.0 & MySQL 4.0 是 OK 的,但是從 4.1 以後就不能這樣做了

然而後來升級至 4.1 之後,從 phpMyAdmin 來看資料怎麼看都是亂碼,為了解決這問題找了無數網站的教學

此篇是在教學該怎麼把原本 MySQL 4.0 以 Big5 編碼的 Database 也可以成功倒入至 MySQL 4.1 以 Big5 編碼的 Database

我的環境是 FreeBSD 8.1 + MySQL 4.1.25 + phpMyAdmin 2.11.11.1

Bojack 發表在 痞客邦 留言(0) 人氣()

# mysql -u root -p

# use Database_Name

# repair table Table_Name;

 

Bojack 發表在 痞客邦 留言(0) 人氣()

前陣子 Daydream 問我說 MySQL 在選擇連線校對時,utf8_general_ciutf8_unicode_ci 哪個好?差別在哪裡。

一直以來我都是用 utf8_general_ci 來做校對,因此也回了他用 utf8_general_ci 較好。

Google 了一下,找到這篇 mysql 裡 utf8_general_ci 跟 utf8_unicode_ci 連線校對的差異 文章,就解答了我們的疑惑了。

簡單來說,若在做資料庫編碼轉換時, utf8_general_ci 速度較快而 utf8_unicode_ci 較正確,這是二者最大的差異!

其實對於我們常用的中文 ( multibyte ) 選擇這二種都行,效果是一樣的,但若碰到其它的語言可就不一定了,因此能用 utf8_unicode_ci 來做為預設的編碼還是較為妥當的!官網在 MySQL Manual 9.11.1 Unicode Character Sets 也做了說明,有興趣的人可以再參考一下

Bojack 發表在 痞客邦 留言(0) 人氣()

參考藍小熊日記的說明,今天成功設定回來了,此篇記錄一下。

首先將 mysql結束掉:

Linux : service mysqld stop

FreeBSD : ps ax ( 找到 mysql ID 後 ),再 kill -9 MySQL-ID

再用以下的指令啟動並進入 MySQL

# mysqld_safe -u root --skip-grant-tables &

# mysql

這樣就可以進入 MySQL

mysql > use mysql;
mysql > UPDATE user SET password=password('新的密碼') where user='root';
mysql > FLUSH PRIVILEGES;

接下來再一次啟動系統 or 啟動 MySQL 就大功告成了!

Bojack 發表在 痞客邦 留言(0) 人氣()

一般來說,若從 phpMyAdmin Dump 出來的 SQL 太大時,透過 phpMyAdmin 在倒回去時往往會發生逾時或是超出檔案大小的限制 ...

雖然說可以去修改 php.ini 來改善此問題,但並不是每個人都是系統的管理者,有可能只是租用空間的使用者而已,遇到這種情形就一籌莫展了。我過去還原資料庫都是用暴力法,直接把整個實體資料庫「搬過去」,即使再大都不會有問題,但這只挶限是系統管理者的操作方式。

不過就是有好人寫出了 bigdump 這個好東西,使用方式很簡單。打開 bigdump.php 後,去修改這幾行

$db_server = 'localhost';
$db_name = '資料庫名稱';
$db_username = '使用者名稱';
$db_password = '使用者密碼';
$filename = '要備份的 sql';
$linespersession = 3000; // 指每次還原幾筆
$delaypersession = 5000; // 中間間隔要休息幾秒,此例是 5 秒鍾
$db_connection_charset = ''; // 編碼使用的字元是哪一種

改好之後,把 sql 檔案和這個 bigdump.php 一起上傳到 phpmyadmin 的目錄下,再直接執行它囉!

[1] 阿修的部落格 - BigDump─MySQL資料匯入好幫手

Bojack 發表在 痞客邦 留言(0) 人氣()

這是從爪哇豆的秘密(JAVA)看到的,算是一個不錯用的小技巧!


利用這個方式可以隨機取得資料庫的資料來應用,如廣告、最新消息等....


使用 SQL 語法的 TOP n 來指定取得筆數,再用 ORDER BY 的方式,來亂數取得資料,並排序。


MS SQL:


SELECT TOP 1 * FROM Table WHERE 條件 ORDER BY NEWID()


ACCESS:


SELECT TOP 1 * FROM Table WHERE 條件 ORDER BY RND(數字欄位名稱)


MYSQL:


SELECT * FROM Table ORDER BY RAND() LIMIT 1


[1] 爪哇豆的秘密(JAVA) - 隨機取得資料(MSSQL,ACCESS,MYSQL)

Bojack 發表在 痞客邦 留言(0) 人氣()

登入 MySQL ~



shell > ./mysql -u root -p

(輸入密碼.... )

shell > show processlist;



就可以看現在有哪些 SQL 語法在執行,若耗 CPU 太兇則就要考慮對 SQL 語法最佳化囉!

Bojack 發表在 痞客邦 留言(0) 人氣()

今天被人告知 phpbb 打不開,昨天還好好的,今天就掛掉了 ~


然而一打開 phpbb 以後,呈現給我看的是錯誤訊息,無法 REPLACE INTO phpbb_sessions 這個 table ?


[code lang="html"]
MySQL errno: 145 Can't open phpbb_sessions.MYI
[/code]
這是第一次看到這個問題,於是利用 phpMyAdmin 來查看看是發生了什麼事 ~


耶, phpMyAdmin 也無法讀取到 ~"~


好吧,上 Google 求救一下,發現了這篇在 2003 年的文章,提問人和我一樣有類似的問題 ...


Bojack 發表在 痞客邦 留言(0) 人氣()

上星期的發表會其實有一段小插曲,今天解決了就將它說明一下

當天早上一連上網站就看到

MySQL Connection Failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)



當下就知道是 MySQL 沒有起來,於是下指令將 MySQL 再 Start,沒有錯誤訊息 ~ 重新整理網頁仍然是連不到 MySQL ~

Bojack 發表在 痞客邦 留言(0) 人氣()

今晚在寫一個程式,將所有的使用者帳號依英文字母分群顯示,語法不難 (以 A 為例)



select * from table where name like "A%"



於是很開心的利用陣列將 A 到 Z 產生出來,每一頁也都正確顯示,正在稱讚自己有多麼聰明時(雖然這很簡單,但我是很容易自滿的人)

熊熊發現,那還有「其它」怎麼辦,難道用數字、中文當帳號名稱的人就不能顯示嗎?

若用 not like 的語法,我相信寫 SQL 會寫到死,就算用 sub-query 一樣要寫 26 次,聽起來很殘忍我知道

於是向 YDL 大師請教了一下,他給了我二個網址 ... [1]PHP: eregi ... [2]酷!學園

果然修改了一下我的語法之後,就可以顯示其它人的資料囉



select * from table where name not regexp "^[a-zA-Z]"

Bojack 發表在 痞客邦 留言(0) 人氣()

這是在 PCZONE 看到的,看來有機會我可以試一下

不過一想到要將 Big5 transform UTF-8 就是一件頭大的事情

還好過去沒有將實體的檔案寫入資料庫,不然我應該會哭死吧

BTW, 這篇文章寫到最後被人潑了冷水 ~ MySQL 在 FreeBSD 的效能還是不比 Linux 丫 ?!

原文鏈結

Bojack 發表在 痞客邦 留言(0) 人氣()

<?php
$host = "localhost";
$user = "資料庫帳號";
$passwd = "資料庫密碼";
$connect = mysql_connect($host,$user,$passwd);
$db = mysql_connect($host,$user,$passwd);
mysql_select_db("資料庫",$connect);

$sql = "OPTIMIZE TABLE 資料表名稱";
$result = mysql_query($sql) or die ("未完成");
?>

Bojack 發表在 痞客邦 留言(0) 人氣()

DROP TABLE IF EXISTS `class`;
CREATE TABLE `class` (
`id` int(4) NOT NULL default '0',
`classname` text NOT NULL
) TYPE=MyISAM CHARACTER SET=utf8;

Bojack 發表在 痞客邦 留言(0) 人氣()

備份:
mysqladmin -uroot -p flush-logs
mysqldump phpbb2 -uroot -p --opt > jdp.sql
      ^^^^
另外,假如你是系統重建或是移機時,必需在新的 MySQL 內,新建一個空白 DB 後,才能夠作回存的動作,你可以用下面的指令建立:
mysql -uroot -p -e "CREATE DATABASE phpbb2"

Bojack 發表在 痞客邦 留言(0) 人氣()

It's incompatibility of authorization MySQL 4.0.x and MySQL 4.1.x
Utilizing files authorization

for MySQL v4.0.x [The php MySQL extension access 'mysql']
libmysql.dll
php_mysql.dll

for MySQL v4.1.x [The php MySQL extension access 'mysqli']
libmysqli.dll
php_mysqli.dll

Bojack 發表在 痞客邦 留言(0) 人氣()

一般連接 MySQL 時,如果你得到 Too many connections 錯誤回應訊息,這意味著巊經有超過max_connections 設定的 client 連接了 mysql 伺服器。如果 mysql 伺服器需要比預設更多的連接數,則可重新啟動 mysqld,微調 max_connections 變數值。
max_connections 乃允許客戶同時連接至 mysql 伺服器的最大數目,預設值為 100
用法如下:


mysql --set-variable(-O) max_connections = 500

Bojack 發表在 痞客邦 留言(0) 人氣()