【免費註冊】 【會員登入】 【個人資料】 【會員列表】 【論壇幫助】 【論壇搜尋】 【登出論壇】

∮Ω奧米加空間∮
∮Ω奧米加空間∮»技術文件區»【推薦】MySql 筆記

訂覽該主題更新消息 | 將該主題推薦給朋友 發表新主題 發起投票  回覆
作者 主題    
dc
管理員



性別:男
來自:瓦肯星
發表總數:10716
註冊時間:2002-05-07 16:32
(第 1 篇) 【推薦】MySql 筆記

Table 'abcd' is marked as crashed and should be repaired
直接下修復指令「REPAIR TABLE `錯誤信息中的資料表`」,即可完成修復
REPAIR TABLE abcd

Table 'abcd' doesn't exist
代表當時是使用 Copy data 資料夾的方式備份,而不是使用倒出 .sql 的方式備份。
請使用正常的方式備份


假如有一個 user_info table 我們要裡面的 OID 從左邊數來的第八個之後的字串請使用
OID=12345678acde
select SUBSTRING(OID,8)
from user_info
結果為 abcde


假如我們要增加字串與前置字元可以如下使用
Set @UserName='abc';
set @id=789;
select CONCAT('hi',@id,@UserName) addStr
結果 hi789abc

取得前一天日期
DATE_ADD(CURDATE(), INTERVAL -1 DAY)

搜尋前20天的syslog資料
SELECT * FROM `syslog`
where host_id=2 and TO_DAYS(NOW()) - TO_DAYS(logtime) >=20
order by logtime asc

刪除前90天的資料
delete FROM syslog where host_id=2 and TO_DAYS(NOW()) - TO_DAYS(logtime) >=90


達到 MSSQL with cte as 的語法
SET @tmpsum600 = 'CREATE TEMPORARY TABLE tmpsum2 AS
SELECT SUM(TotalBet) AS TotalBet,SUM(TotalPayout) AS TotalPayout,SUM(MajorPrize) AS MajorPrize,COUNT(DISTINCT userid) AS sumnum
FROM abc a INNER JOIN cde b
ON a.GamePlayHistoryID=b.GamePlayHistoryID WHERE  
gameid=600 AND starttime > (select CONCAT(@dt1,'' 12:00:00'') addStr) AND starttime < (select CONCAT(@dt,'' 12:00:00'') addStr)';
PREPARE stmt600 FROM @tmpsum600;
EXECUTE stmt600;
UPDATE dc01 a,tmpsum2 b SET a.TotalBet=b.TotalBet ,a.TotalPayout=b.TotalPayout,a.MajorPrize=b.MajorPrize,a.sumnum=b.sumnum WHERE a.DATE=@dt AND gid=600;
DROP PREPARE stmt600;
DROP TABLE tmpsum2;




本帖由dc最後編輯於2015-09-25 15:37

Your mind to my mind,

your thought to my thought
發表時間:2012-03-03 18:19
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:220.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:10716
註冊時間:2002-05-07 16:32
(第 2 篇)

由於 Mysql 沒有 row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 的功能
所以對於搜尋出來的結果要編上流水號有點麻煩~但可以透過變數來達到相同的功能

假如我們有一個 Table 名稱是 Rack_Map 我要將 ORDER BY Num DESC,Location ASC 的結果編上流水號可以這樣下,結果是 rank 為從1開始的流水號

SELECT (@rownum := @rownum + 1) AS rank,Host,Location,Num,Unum
FROM Rack_Map,  (SELECT @rownum := 0) AS r
ORDER BY Num DESC,Location ASC




本帖由dc最後編輯於2015-11-03 10:45

Your mind to my mind,

your thought to my thought
發表時間:2014-02-19 14:20
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:59.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:10716
註冊時間:2002-05-07 16:32
(第 3 篇)

http://coding.memory-forest.com/%E7%94%A8%E5%91%BD%E4%BB%A4%E5%88%97%E7%AE%A1%E7%90%86mysql%E4%BD%BF%E7%94%A8%E8%80%85.html

顯示使用者清單:
mysql > select * from mysql.user;


http://blog.toright.com/archives/1214
接下來我們新增一個使用者 killme, 密碼設定為 killpwd, 並且給予資料庫的所有權限
use mysql;
insert into user (host,user,password) values('%','killme',password('killpwd'));
GRANT ALL ON *.* TO 'killme'@localhost IDENTIFIED BY 'killpwd' WITH GRANT OPTION;
FLUSH PRIVILEGES;

如果要給予使用者特定資料庫的操作權限可以這麼做:
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE ON dbname.* TO 'killme'@localhost IDENTIFIED BY 'killpwd';


如果修改了 mysql.user 的資料,記得 mysql.db 的資料也要一併改喔。
select * from mysql.user;
update mysql.user set Host='xx.xx.xx.xx' where Host='192.xx.xx.xx';
select * from mysql.db;
update mysql.db set Host='xx.xx.xx.x' where Host='192.xx.xx.xx';


insert into mysql.user (host,user,password) values('x.x.x.x','user_name',password('xxx'));
FLUSH PRIVILEGES;
GRANT SELECT,INSERT,UPDATE,DELETE ON dbname.* TO 'user_name'@'x.x.x.x' IDENTIFIED BY 'xxx';
FLUSH PRIVILEGES;


修改完資料後要
FLUSH PRIVILEGES;  在 mysql 資料庫內,一定要用 flush 更新記憶體上的資料




本帖由dc最後編輯於2014-02-19 15:33

Your mind to my mind,

your thought to my thought
發表時間:2014-02-19 14:46
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:59.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:10716
註冊時間:2002-05-07 16:32
(第 4 篇)

要匯入文字檔到 db 裡並且忽略第一行的話可以這樣下語法,記得檔案要放在 tmp 裡才讀的到
load data infile '/tmp/20140815.txt'
into table test    
fields terminated by ','  
lines terminated by '\r\n'
IGNORE 1 LINES;

Bash中使用MySQL导入导出CSV格式数据
http://codingstandards.iteye.com/blog/604541

MySQL 超新手入門(19)匯入與匯出資料
http://www.codedata.com.tw/database/mysql-tutorial-19-outfile-dump-infile-import/




本帖由dc最後編輯於2014-08-18 09:45

Your mind to my mind,

your thought to my thought
發表時間:2014-08-18 09:42
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:210.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:10716
註冊時間:2002-05-07 16:32
(第 5 篇)

如果登入出現
mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

請使用 root 登入
mysql -uroot -p



其他問題的解決方式可以參考 風隨雲想

1.service mysqld stop
2.service mysql start
3.mysql -uroot -p
4. GRANT all ON *.* TO root@'localhost' IDENTIFIED BY '輸入你 root 的密碼';
5.FLUSH PRIVILEGES;

解決 MYSQL 登入時,ERROR 1045 (28000) using password: NO 的方法


我的系統是 UBUNTU 11.04,安裝的MYSQL版本為14.14(注1),安裝好並設定 root 密碼後,透過終端機輸入指令 mysql -u root ,卻出現

    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 訊息。

改輸入 mysql -u root -p   強制輸入密碼,卻變成

    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

在網路上查詢了一下,發現問題似乎與  'root'@'localhost' ,帳號跟登入位置與密碼對應有關,也發現這問題十分氾濫,並似乎沒有個好的SOP解決流程,於是試了幾種方法,整理成以下心得:

===================================



1.首先,停止MYSQL 服務:

    #  /etc/init.d/mysql stop              or  #  stop mysql          or # service mysql stop

2.接著跳過授權表訪問,命令如下:

    # mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

3.登錄  MYSQL:

    # mysql -uroot mysql    

    or

    # mysql -uroot mysql -p

    輸入 root 密碼,進入MYSQL。

    這裡若依舊跳出  ERROR 1045 (28000)  訊息,則請跳至文末的 A 步驟

4.重新寫入 root 密碼:

    mysql> UPDATE user SET Password=PASSWORD('輸入你 root 的新密碼') where USER='root';

5. 把 所有資料庫(含其下的所有資料表),授權給 root,從 localhost 上來,密碼為引號內數據  '*****'。

    mysql> GRANT all ON *.* TO root@'localhost' IDENTIFIED BY '輸入你 root 的密碼';

6.更新權限!密碼若有更動,一定要執行此行指令。

    mysql> FLUSH PRIVILEGES;

7.離開  MYSQL

    mysql> quit

8.輸入密碼,正常進入 MYSQL。

    # mysql -uroot -p


===================================


A.直接使用  /etc/mysql/debian.cnf  文件中  [client]  提供的用戶名和密碼:

    # mysql -udebian-sys-maint -p

    輸入  [client]  中的密碼

    mysql> UPDATE user SET Password=PASSWORD('輸入你 root 的新密碼') where USER='root';
    // 重新寫入 root 密碼

    mysql> GRANT all ON *.* TO root@'localhost' IDENTIFIED BY '輸入你 root 的密碼';
    // 把 所有資料庫(含其下的所有資料表),授權給 root,從 localhost 上來,密碼為引號內數據  '*****'。

    mysql> FLUSH PRIVILEGES;
    // 更新權限!密碼若有更動,一定要執行此行指令。

    mysql> quit

    # mysql -uroot -p

    輸入密碼,正常進入 MYSQL。



===================================




以上兩種狀況我都遇過,依以上方式我的問題都解決了。

另外改好後,MYSQL 系統似乎需要一點時間更動,因為在終端機上MYSQL可進去了,網頁的 phpmyadmin 卻依舊進不去,SSH連也進不去,直到間隔了快 10 秒,才一切正常。










注1: 欲查詢MYSQL版本指令為

    # mysql -V

      查詢PHP 版本指令為

    # php -v

      要注意大小寫喔!






Your mind to my mind,

your thought to my thought
發表時間:2015-11-03 10:37
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:123.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:10716
註冊時間:2002-05-07 16:32
(第 6 篇)

如果無法直接登入的話
# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

可以使用下列的方式登入~
#mysql -u root -p -h 127.0.0.1
#mysql -u root -p -h localhost






Your mind to my mind,

your thought to my thought
發表時間:2015-11-26 12:04
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:118.*.*.* 編輯  引言回覆 
所有時間均為GMT+8, 現在是2024-03-29 14:53    
訂覽該主題更新消息 | 將該主題推薦給朋友 發表新主題 發起投票  回覆

快速回覆
主題 ( 回覆文章可以不輸入標題 )
URLs自動分析
有回覆時郵件通知
禁用表情符號
使用簽名

<聯絡我們 - OMEGA - 控制面板>

Powered by Centaur & Joksky & DC, ver 2003.08.14
Copyright ©2002-2008 PHPY.COM


頁面生成時間:0.010288953781128