MySQL SQL_SAFE_UPDATE 模式

剛發佈一個新模塊,就有客戶投訴說不能使用。安排了一個網上面對面檢查,發現對方在使用模塊時,一旦要進行資料庫的更新或刪除資料動作,就會被卡著。

錯誤訊息為 1175 You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column.

查了下谷歌大神的説法,錯誤訊息中其實也已經給了很明顯的對策,就是這個服務器啓動了資料安全機制,一旦需要進行 Update 或 Delete 動作,必須在 WHERE 的語句中有使用 KEY 欄目。例如主索引欄目,常用名為 id。

解決方式也很簡單,如果只要繞過這個情況,在所有 Update 和 Delete 語句中,加入 id != “” 或 id <> “” 即可。

當然,如果服務器允許關閉此安全模式,也可以運行 SET SQL_SAFE_UPDATES=0; (系統當然是越安全越好,所以還是別用的好。。。)

查找MySQL/MariaDB的設置文件位置

有時候找尋這些設置文件,真的是一場噩夢。以下的指令可以輕鬆找到它的設置位置:

/usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"

另外,也可以文件夾統一儲存位置的形式置放它的設置文件。

#include all files from the config directory
!includedir /etc/my.cnf.d

重設MySQL root密碼

好久沒碰過更換root密碼的這爛事了,今天重溫了一遍。。。

一般上,伺服器一旦運行了,最好的情況是永遠無需碰它的設置。但有時候真的無可避免。這回,在使用了往常用的修復手法后,卻被系統直接KO,被系統提醒我 “請仔細詳讀用戶手冊中,Security這欄目。。。”

找了來看,一頭霧水。最後去問神了,結果還是一直被KO。直到最後在Stack Overflow的這篇文章内,才找到真正的答案。。。

是的,系統升級了,往常用的mysqld_safe已經不存在了。現在更方便的衹需設置好伺服器的運作環境常量,重啓即可。長話短說,流程轉載在下方:

1. Stop mysql:

> systemctl stop mysqld

2. Set the mySQL environment option

> systemctl set-environment MYSQLD_OPTS=”–skip-grant-tables”

3. Start mysql usig the options you just set

> systemctl start mysqld

4. Login as root

> mysql -u root

5. Update the root user password with these mysql commands:

mysql> UPDATE mysql.user SET authentication_string = PASSWORD(‘MyNewPassword’) -> WHERE User = ‘root’ AND Host = ‘localhost’;

mysql> FLUSH PRIVILEGES;

mysql> quit

(for 5.7.6 and later, you should use mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘MyNewPass’;)

6. Stop mysql

> systemctl stop mysqld

7. Unset the mySQL envitroment option so it starts normally next time

> systemctl unset-environment MYSQLD_OPTS

8. Start mysql normally:

> systemctl start mysqld

9. Try to login using your new password:

> mysql -u root -p

Sun终于把MySQL买回家了。。。

这应该会是今年IT行业中,其中一个重要的事件吧?

MySQL,目前网络世界中最红火的资料库伺服系统,其中一个成功以开源概念研发出来超强系统,其功能和能力与市场上任何一个高阶资料库伺服系统比美,而且稳定度比许多系统都来得强。而且最吸引人的是,只有使用它的系统来赚钱的,才需要付费,一般非盈利使用是不必付费的哦~

蚂蚁目前的后台资料库系统就是使用它的。

而SUN,相信很多对电脑稍微有认识的都晓得它。不管你是否知道Sun是谁,但是它所主推的产品,你肯定有用过,而且这个产品的影响力会继续的延伸下去。对了,就是Java。没听过?那么Javascript(简称JS)呢?也不晓得?

[#M_那么这个功能,你应该看到吧?|less..| 是的。这个在页面中隐藏文章的功能,就是使用JS来实现的。_M#]
现在,MySQL被Sun购买了,目前相信IT人最想知道的是MySQL往后的发展会变成怎样?接下来的收费项目是否会更改?开发团队内有没有更动?

嗯。。。看来要好好追踪了。