2019年5月24日 星期五

VirtualBox is already locked by a session (or being locked or unlocked

昨天要幫VM Server 增加記憶體後,不料其中一台VM Guest 卻無法啟動,啟動的訊息
VBoxHeadless: error: The machine 'tvap36' is already locked for a session (or being unlocked)
VBoxHeadless: error: Details: code VBOX_E_INVALID_OBJECT_STATE (0x80bb0007), component MachineWrap, interface IMachine, callee nsISupports
VBoxHeadless: error: Context: "LockMachine(session, LockType_VM)" at line 947 of file VBoxHeadless.cpp


VM Guest 主機名稱 tvap36

VBoxManage startvm tvap36  --type emergencystop 

然後再啟動VM就可以了

參考文章:

2019年2月26日 星期二

GCP Cloud SQL: MySQL Create View ERROR 1227: Access denied; you need (at least one of) the SUPER privilege(s) for this operation

今日 User 要建立一個 MySQL 的View  Table,但卻出現錯誤訊息


ERROR 1227: Access denied; you need (at least one of) the SUPER privilege(s) for this operation

使用者說,是不是沒有給他足夠的權限,所以無法執行。

環境說明:
1.MySQL 是用 Google Cloud Platform (GCP) 的 Cloud SQL (MySQL 第 2 代 5.7)
2.Cloud SQL 沒有區分帳號可以讀寫哪一個Schema
3.Client 工具用的是 MySQL Workbench 6.2 CE
4.使用者是用 MySQL Workbench  連接到 Cloud SQL 讀取現有 View , 工具就會產出 Create Statement
5.再執行工具產生的Create Statement,就會出錯

處理方式:
當然要加大權限也不是不可以,但更應該確認需求,而不是盲目的加大權限
根據
http://jenyu316.pixnet.net/blog/post/223690152-mysql%E5%9B%9E%E6%87%89----%3A-%231227---access-denied%3B-you-need-%28at-least-o
的說明,只要將以下三行拿掉就可以了。

ALGORITHM = UNDEFINED
DEFINER = `xxxx`@`xx.xx.xx.xx`    << 最主要的原因
SQL SECURITY DEFINER

建立 MySQL 新帳號





建立 MySQL 新帳號, 以下例子會建立 "newuser" 帳號, 密碼是 "newpassword", 主機是 "localhost":

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'newpassword';

如果希望該帳號可以從何地方登入,則localhost 可以換成 "%" 字符


給予新帳號 "newuser" 權限讀寫新資料庫 "newdatabase":

GRANT ALL PRIVILEGES ON newdatabase.* TO 'newuser'@'localhost';

更新資料庫狀態,讓帳號與權限生效

FLUSH PRIVILEGES;



登入資料庫

mysql -u newuser -p