在 Mac 上安裝 MySQL
利用 brew 進行安裝,安裝後會預設一個不用輸入密碼的 root 帳號,安裝在 /usr/local/bin/mysql
1
$ brew install mysql
第一次使用,先更改密碼
法一:手動更改
1
2
3
4
5
6
7
8$ mysql -u root # 使用預設的 root 帳號連接 mysql
mysql>
mysql> USE mysql; # 切換到 mysql 資料表
mysql> UPDATE user SET password=password('root') WHERE user='root'; # 設定 root 新的密碼
mysql> exit
$ mysql -u root -p # 使用改過密碼的 root 帳號連接 mysql
Enter password: **** # 輸入密碼才可以登入
mysql>法二:使用 mysql_secure_installation 修改
mysql_secure_installation 提供了一些初始化 MySQL 的快速設定。除了要設定 root 設定密碼外,並加上一些安全權限的設定。
1
2
3
4
5
6
7
8
9
10
11
12mysql_secure_installation
Enter current password for root (enter for none):
輸入 root 的密碼,如果沒有設定過,直接按 Enter 鍵即可
Set root password? [Y/n]
設定 root 的密碼
Remove anonymous users? [Y/n]
移除 anonymous 使用者
Disallow root login remotely? [Y/n] # 取消 root 遠端登入
Remove test database and access to it? [Y/n]
移除 test 資料表
Reload privilege tables now? [Y/n]
重新載入資料表權限
MySQL 的啟動,重啟,停止
1
2
3$ mysql.server start
$ mysql.server restart
$ mysql.server stop
在 Mac 上更新 MySQL
利用 brew 進行更新,更新後會預設一個不用輸入密碼的 root 帳號
1
$ brew upgrade mysql
修改 root 密碼,可以參考上述的方法
舊有資料結構更新
由於不同版本的 MySQL,可能會有不一樣的資料結構,導致新版無法使用舊的資料。可以使用 mysql_upgrade 對資料進行更新1
mysql_upgrade -u root -p --force
其他問題
MySQL Handling of GROUP BY
only_full_group_by (Default in mysql 5.7.9)
SQL92 and earlier does not permit queries for which the select list, HAVING condition, or ORDER BY list refer to nonaggregated columns that are neither named in the GROUP BY clause nor are functionally dependent on (uniquely determined by) GROUP BY columns.
以下面的例子來說,如果 name
是 primary key 或是 unique NOT NULL column,GROUP 時 address
可以對映到唯一 name
。反之,將造成一個 address 會找到超過一個 name
,這種情況(nonaggregated columns)是被禁止的。
1 | mysql> SELECT name, address, MAX(age) FROM t GROUP BY name; |
- 解法一:ANY_VALUE()
1 | mysql> SELECT name, ANY_VALUE(address), MAX(age) FROM t GROUP BY name; |
- 解法二:關閉 ONLY_FULL_GROUP_BY mode
1 | mysql> set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; |
Note.
一對多的資料,展開後會出現多筆,但只要回傳一筆,原本的版本可以對 id 進行 GROUP。但是新版的 MYSQL 禁止這種 GROUP 0.0”
Reference
[1] brew install mysql on mac os
[3] MySQL常用指令及帳戶管理
[2] MySQL Server 安裝後的設定
[4] 升級 MySQL 完成後, 建議手動執行的命令
[5] mysql log error
[6] https://github.com/munkireport/munkireport-php/issues/351
License
本著作由 Chang, Wei-Yaun (v123582) 製作,
以創用CC 姓名標示-相同方式分享 3.0 Unported授權條款釋出。