最近要在macos上面安裝乙個mysql8,本來不出意外的話,應該是一件很簡單的事,結果耗費了我大半天的時間,在老家也沒網,還是用的手機4g網,不過,好在最終還算安裝好了,也算是給了自已一點小小的安慰吧。
在mac上,我安裝軟體首先是用brew的方式,主要也是不想去處理各種依賴,解除安裝軟體也方便,如果你要公升級軟體也是很方便的,他基本都是通過軟鏈結的方式,比如我常用的php和go,公升級起來就很方便呀,安裝完後,軟鏈結更改下就行了,但是如果你不經常更新brew的話,在安裝軟體的時候他會先更新自身,有時候網速不行,就會很慢的,當然可以關閉自動更新。
programarguments
/usr/local/mysql-8.0.21-macos10.15-x86_64/bin/mysqld
--defaults-file=/usr/local/etc/my8.0.cnf
--basedir=/usr/local/mysql-8.0.21-macos10.15-x86_64
--datadir=/usr/local/mysql-8.0.21-macos10.15-x86_64/data
--plugin-dir=/usr/local/mysql-8.0.21-macos10.15-x86_64/lib/plugin
--early-plugin-load=keyring_file=keyring_file.so
--keyring-file-data=/usr/local/mysql-8.0.21-macos10.15-x86_64/keyring/keyring
--log-error=/usr/local/mysql-8.0.21-macos10.15-x86_64/data/mysqld.local.err
--pid-file=/usr/local/mysql-8.0.21-macos10.15-x86_64/data/mysqld.local.pid
--user=_mysql
--default_authentication_plugin=mysql_native_password
--port=3307
可結果還是一樣,於是我進入mysql8的安裝目錄,同時停用我本地的5.7,直接接行mysqld,發現有許可權問題,這個目錄的使用者是_mysql,然後我就更改為另乙個使用者再啟動,這次倒是能啟動了,但是我連進去後,發現裡面的資料庫還是5.7下面的庫,我明明指定了8.0自身的data路徑,怎麼跑到5.7下去了。哎,算了,不想去深究了,看網上說可以用mysql_multi的方式啟動多例項,我是不想去折騰了,只能用上最後的方式了,用docker吧.
docker用於體驗一些新的東西,搞些環境還是挺方便的,而且如果不要了,直接刪除映象或容器就行了。
用docker安裝mysql8很簡單,先搜尋下
$
docker search mysql
name description stars official automated
mysql mysql is a widely used, open-source relati... 10014 [ok]
mariadb mariadb is a community-developed fork of m... 3666 [ok]
mysql/mysql-server optimized mysql server docker images. crea... 733 [ok]
拉取映象
$
docker pull mysql:8.0
待拉取完畢後,檢視下映象
$
docker images
repository tag image id created size
mysql 8.0 e1d7dc9731da 3 weeks ago 544mb
使用映象
在使用前,先建立幾個目錄,主要是配置和data的對映,如果不用宿主機建立對映,你的容器重啟後,資料就沒了。
$
執行容器:
$
$docker run -p 3307:3306 --name mysql8 -v $pwd/conf:/etc/mysql/conf.d -v $pwd/logs:/logs -v $pwd/data:/var/lib/mysql -e mysql_root_password=123456 -d mysql:8.0
命令說明:
-p 3307:3306:將容器的 3306 埠對映到主機的 3307 埠。
-v -v $pwd/conf:/etc/mysql/conf.d:將主機當前目錄下的 conf/my.cnf 掛載到容器的 /etc/mysql/my.cnf。
-v $pwd/logs:/logs:將主機當前目錄下的 logs 目錄掛載到容器的 /logs。
-v $pwd/data:/var/lib/mysql :將主機當前目錄下的data目錄掛載到容器的 /var/lib/mysql 。
-e mysql_root_password=123456:初始化 root 使用者的密碼。
上面的命令執行後,如果正常的話,就會啟動乙個容器,使用docker ps
或docker container ls
檢視,如果找不到的話,那就說明剛才那個run有問題,這種一般是你宿主機的許可權問題,更改下許可權就行了,如果失敗了,需要用docker rm mysql8
刪除剛才的容器,不然下次再用run的時候會報已經存在同名的容器了。
$
docker ps
container id image command created status ports names
37bcead3d1b1 mysql:8.0 "docker-entrypoint..." 23 hours ago up 21 hours 33060/tcp, 0.0.0.0:3307->3306/tcp mysql8
上面的容器啟動後,可以進入容器內部看看
$
docker exec -it mysql8 /bin/bash
在容器內部,可以使用mysql -u root -p123456
的方式來連線mysql8
通過上面的安裝方式,只是說明了安裝成功,如果在宿主機環境通過應用程式或者其它mysql管理工具去連線,你會發現還是報錯,主要是密碼認證那裡,mysql8使用了新的密碼演算法,於是我們就要更改下演算法為 mysql_native_password
進入我們啟動的容器內部,然後連線mysql,再分別執行
mysql>
grant all privileges on *.* to root@'%' with grant option;
mysql>
alter user 'root'@'%' identified by '123456' password expire never;
mysql>
alter user 'root'@'%' identified with mysql_native_password by '123456';
mysql>
flush privileges;
執行完成後,這個時候才算真正的安裝完成,同時在宿主機也能用3307埠來遠端連線了。
倒騰了一大圈,結果還是用docker的方式來安裝的,還別說,用docker整這些環境雖然也有不少的小問題,但是總體來說,還是挺方便的,看來,以後還是要把docker多用起來,只要對一些資料作持久化處理,其它的就盡量少管,也是一件很美妙的事呀。
Mysql8安裝筆記
1 以管理員的身份開啟cmd視窗跳轉路徑到x mysql 8.0.17 winx64 bin 首先完成初始化操作 初始化命令 2 然後輸入 mysqld install 進行安裝 3 之後輸入 net start mysql 啟動程式 4 使用初始密碼登入資料庫,然後立刻修改密碼!命令 mysql ...
MYSQL Windows安裝MySQL8教程
2 建立my.ini檔案 mysqld 設定3306埠 port 3306 設定mysql的安裝目錄 basedir d mysql8 設定mysql資料庫的資料的存放目錄 datadir d mysql8 data 允許最大連線數 max connections 200 允許連線失敗的次數。max...
C 的心酸歷程
好久沒有寫部落格了,因為我掉進了c的坑。從python轉c,是一條漫漫長路。主要的障礙是程式設計習慣,核心問題卻是自我設限。起初總感覺c很難,很抗拒,越是抗拒越是難。但是工作原因不得已而為之,堅持下來了。終於告別了對c的恐慌,故此值得記錄一下。此文只是簡單記錄一下,基礎的型別轉換 mkfifo的簡單...