但一些權限指令都快忘光了
這邊也有詳盡介紹:http://businesswing.net/webdesign/php-cmd_data_export_and_import/#more-1958
mysql 忘記密碼
安裝完成後在OS Command Line 更改Root Password
1.先停掉mysql
/etc/rc.d/init.d/mysql stop
2.以--skip-grant-table 的參數啟動mysql
safe_mysql --skip-grant-table&
3. 更改root 密碼
# mysql mysql
mysql> UPDATE user SET password=password('newpassword')
WHERE user='root';
mysql> exit
4.停掉mysql再重跑
# mysqladmin -uroot -p shutdown
Enter password: //輸入新設定的密碼
# /etc/rc.d/init.d/mysql start
//登入
mysql -u root -h hostname -p// show 出資料庫
show databases;
//使用資料庫
use 資料庫名稱;
//檢查使用中的資料庫
select database();
//秀出資料庫
shell指令mysqlshow
mysql下 show databases;
//顥示連結的狀態
status
//秀出資料庫使用狀況
select database();
//秀出資料庫內的資料表名稱
show tables;
//秀出資料庫欄位名稱及內容
describe 資料表名稱;
//加入新的資料至欄位
INSERT INTO manber( 欄位, 欄位, )
VALUES ( '插入字串' , '插入字串' );
//加入欄位至資料庫尾端
ALTER TABLE `TABLE_NAME` ADD `新增欄位名稱` VARCHAR( 5 ) ;
//show 出 資料表內所有的內容
select * from 資料表名稱;
// show 出資料表後匯入一個新的文件
mysql -u root -hhostname -p -e "select * from cd limit 1" > 匯出的名稱
// 搜尋某筆的資料
select * from table名稱 where type_id='24';
//修改芋筆的資料
update table名稱 set 欄位1='5' where 欄位2='24' limit 5;
//記算資料庫筆數
select count(櫚位名) from table_name ;
或
select count(*) from table_name ;
timestamp下
select 櫚位名1,count(*) from table_name where Time < timename_timestamp('2003-5-8 12:0:0') group by 欄位名1 ; //亂數 select select * from twble_name order by rand() ; //新增資料 insert into 資料庫名稱(欄位1,欄位2) values(資料1,資料2); //刪除資料 delete from 資料庫名稱 ; //不用加星號 shell> mysqladmin -u root password "newpwd"
shell> mysqladmin -u root -h host_name password "newpwd"
在Windows環境中,Login Mysql後,更改Root Pasword
shell> mysql -u root
mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR ''@'%' = PASSWORD('newpwd');
在Unix環境中,Login Mysql後,更改Root Pasword
shell> mysql -u root
mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR ''@'host_name' = PASSWORD('newpwd');
查詢資料庫清單
shell> mysql -u root
mysql> SHOW DATABASES ;
建立資料庫
shell> mysql -u root
mysql> Create database DB_Name;
建立使用者及密碼,並賦予所需之權限
shell> mysql -u root
mysql>GRANT ALL PRIVILEGES ON DB_Name.*
TO User_Name@localhost IDENTIFIED BY 'newpwd'
更改使用者密碼
shell> mysql -u root
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')
WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
MySQL 常用的設定和指令記錄, 採 FAQ 方式記錄.
- MySQL 匯入 sql 指令
- mysql -u userid -p [-h localhost] db_Name < xxxxx.sql
- MySQL 於 mysql> 使用 less 看結果
- pager less -n -i -S
- 直式列出 query 結果
- SELECT * FROM TABLE_NAMEG
- 設定 mysql> 變成 (user@host) [(dbname)]>
- 於 .bashrc 加一行
export MYSQL_PS1="(u@h) [d]> "
- MySQL 看 status
- show status; 或 mysqladmin -u root -p status
- MySQL 要讓 localhost 以外的 Client 連進來
- /etc/mysql/my.cnf 拿掉 bind-address = 127.0.0.1 即可
- MySQL 秀錯誤編號, 該如何查此編號對應的原因?
- MySQL error 編號, 在 shell 下打 "perror 編號" 就可知道原因了, Example:
$ perror 134 MySQL error: 134 = Record was already deleted (or record file crashed) mysql error code shell> perror 12 System error: 12 = Cannot allocate memory
- Check Table 是否有錯誤
- CHECK TABLE tbl_name [fast] [quick], 詳可參見: 此連結
- 於系統運作下, 修復 TABLE
- repair table table_name, 詳可參見: 此連結
- MySQL 停止後, 於 shell 下修復 TABLE(MyISM)
- myismchk /mysql/data/TABLE_NAME.MYI
- MySQL 只 dump table 的 schema
使用此參數: --no-data, -d mysqldump -d -u root -p DB_NAME TABLE_NAME > TABLE_NAME.sql
- MySQL 只 dump db 的 schema
使用此參數: --no-data, -d mysqldump -d -u root -p DB_NAME > DB_NAME.sql
- MySQL 只 dump db 的 data
-c: SQL 語法前面會把欄位名稱也列出來 -t: Table mysqldump -u root -p -t -c DBNAME > DB_ALL_DATA.sql 或 mysqldump -u root -p -t DBNAME > DB_ALL_DATA.sql
- MySQL 只 dump table 的 data
-c: SQL 語法前面會把欄位名稱也列出來 -t: Table mysqldump -u root -p -t -c DBNAME TABLENAME > DB_TABLE_DATA.sql 或 mysqldump -u root -p -t DBNAME TABLENAME > DB_TABLE_DATA.sql
- Query 指定使用哪個 index 的語法
SELECT COUNT(*) FROM TABLE_NAME USE INDEX(XXX_idx)
- 看此 table_name 使用多少容量、空間
show table status like 'table_name';
- 看 table 如何 create 的
mysql> show create table table_name
- 如何看 mysql bin log
mysqlbinlog m10-relay-bin.001
- 如何看 SQL 語法使用到哪個 Index Key
mysql> EXPLAIN SELECT * FROM User
- 如何設定把 所有 對此 MySQL 所下的 SQL 語法都記錄下來
my.cnf [mysqld] log = /var/logs/mysql/mysql-query.log
- 如何找出 MySQL column欄位中的值不等於 0-9 的
SELECT * FROM TABLENAME WHERE column REGEXP '[^0-9]';
- 要將資料倒回 DB 的標準做法(若有設 Foreign Key 用此方法才能順利匯入)
- mysql> SET FOREIGN_KEY_CHECKS = 0;
- mysql> SOURCE dump_file_name;
- mysql> SET FOREIGN_KEY_CHECKS = 1;
設定 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; (最後一定要強迫更新權限)
沒有留言:
張貼留言