安裝Mysql8的心酸歷程

2022-01-21 23:09:16 字數 4395 閱讀 7442

最近要在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 psdocker 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的簡單...