LINUX 裝完MYSQL RPM包 , 無法進入處理

今天裝完mysql  , 利用 mysqladmin -uroot password 設定完密碼後
mysql -uroot -p
居然跳出
[root@zabbix zabbix-2.0.8]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@zabbix zabbix-2.0.8]# /etc/init.d/mysqld stop
從此就進不去了 .. 只好再請出google  , 解決方法如下

打完收工 !!!

mysql 基本指令收集

每次都很久才會處理一次 資料庫的問題 , 每次就要找一次指令 !!
想想還是開個版把有用過的指令都記下來比下實際 !

===== 設定 mysql root密碼  =====
>mysqladmin -u root password '1234'
因為這樣會在伺服器上會留下history ,我個人會使用:
1.登入mysql:
>mysql -u root

2.選擇任一個資料庫:
mysql>use mysql;

3.設定密碼
mysql> update mysql.user set password=PASSWORD(”輸入你的密碼) where User=’root’;

4.存儲後離開
mysql> flush privileges;
mysql> quit

===== 建立資料庫與資料表=====

mysql>CREATE DATABASE 資料庫名稱;

===== 備份 及 復原 資料庫 =====

1.備分:
mysqldump -u root -p 資料庫名稱 --opt >file.sql

2.復原:
mysql  -u root -p 資料庫名稱 <file.sql

===== 新增使用者 =====

可使用GRANT指令,同時新增使用者與給予權限的工作
mysql> GRANT ALL PRIVILEGES ON * . * TO
‘帳號’@'%’ IDENTIFIED BY ‘密碼’;
mysql> FLUSH PRIVILEGES;
mysql> exit

=====  忘記mysql root 解決方法  ===== 

1. 關閉 MySQL 伺服器。
  >service mysqld stop

2. 用以下指令啟動 MySQL,以跳過檢查權限的資料表
>mysqld_safe --skip-grant-tables &

3. 現在己經可以用空密碼進入 MySQL
>mysql -u root

4. 進入 MySQL 後執行以下指令更改 mysql root 密碼:
> update mysql.user set password=PASSWORD(”new_password”) where User=’root’;
> flush privileges;
> quit

5. 最後只需重新啟動 MySQL,便可以用新設定的密碼進入了。

MySQL 的備份及還原

要備份 MySQL 資料庫主要分為兩個方法,一是將資料庫目錄完整備份:二是使用 MySQL 內建的 mysqldump 程式。

備份資料庫目錄
MySQL 預設的儲存目錄在 /var/lib/mysql 內容,底下會有以資料庫名稱的目錄,例如 mydb 目錄便應該是 mydb 資料庫的資料。

如果 MySQL 正在運行,請先停止 MySQL,原因是可能會有資料未完全寫入,而 MySQL 會 lock 在使用中的 DB 檔案。

 

  1. /etc/rc.d/init.d/mysqld stop
  2. cd /var/lib/mysql/
  3. tar zxcf mydb_backup.tgz mydb
  4. /etc/rc.d/init.d/mysqld start

 

以上指令會先停止 MySQL,然後把 mydb 資料庫製作一個 taz 檔的備份,並儲存到 mydb_backup.tgz。
在使用以上指令時,請根據個別系統的設定作出修改。

好了,以上就麼 3 句指令就完成備份了,如果不幸的事情發生了,資料庫發生錯誤而要復原資料,可使用以下指令:

 

  1. /etc/rc.d/init.d/mysqld stop
  2. cd /var/lib/mysql/
  3. mv mydb mydb_error
  4. tar zxvf mydb_backup.tgz
  5. /etc/rc.d/init.d/mysqld start

 

以上指令是先把 /var/lib/mysql/mydb 移到 /var/lib/mysql/mydb_error,然後將原先製作的備份檔解壓到 /var/lib/mysql/mydb。

mysqldump
雖然以上方法十分簡單,但有一個問題存在,那就是在備份及復原時均需停止 MySQL 的運作,這樣對於實際應用十分不便。再者,這樣備份出來的檔案,如果在相同版本的 MySQL Server 應該沒有問題,但移到版本不同的 Server 則不一定可以成功復原。

因為有以上的問題,MySQL 已經內建了備份工具,它就是 mysqldump。
mysqldump 的備份方法是將資料庫內的每個資料表結構及每筆資料產生 SQL 語句,然後存到文字檔。而且它可以自訂每一個資料表一個檔案,以及將資料表結構及資料分開儲存,以下是使用例子:

 

  1. mysqldump --user=root -p mydb > /backup/mydb.sql

 

以上指令會使用 mysqldump 將 mydb 備份到 /backup/mydb.sql,在輸入指令後,需要輸入 MySQL 的 root 密碼。

至於復原資料同樣簡單,只要一句指令便完成:

 

  1. mysqldump --user=root -p mydb < /backup/mydb.sql

 

以上指令會將 /backup/mydb.sql 備份檔復原到 mydb 裡面。如果你的 MySQL Server 不止一個資料庫,希望可以一次過將所有資料庫備份起來,可以寫一個簡單的 shell script 完成,又或者使用以下指令:

 

  1. mysqldump --user=root -p --all-databases > /backup/mysql.sql

 

這個 --all-databases 代表所有資料庫,這樣 mysqldump 便會將所有資料庫備份到 /backup/mysql.sql。

以上文章轉貼自bake