docker之mysql鏡像使用

docker之mysql鏡像使用

在自己寫一些東西的使用要使用mysql數據庫,正好這個時候在接觸docker。當時就在想爲什麼就不直接使用docker的mysql鏡像呢?

獲取鏡像

docker pull mysql

在這裏不講docker的安裝,使用上面的命令就可以直接拉取最新的mysql鏡像。

設置用戶和密碼

在拉取完mysql鏡像後,就直接使用了:

docker run -r -t mysql

發現了提示如下錯誤:

error: database is uninitialized and password option is not specified 
  You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD

通過讀取官方文檔,發現,在使用mysql鏡像的時候需要提供mysql用戶名和密碼,如果是使用root用戶登錄的時候,需要提供root用戶的密碼。提供密碼的方式很簡單,就是使用docker run-e 指令,

docker run -i -t -e MYSQL_ROOT_PASSWORD=hsulei mysql

可以使用-p 命令對外暴露3306端口。這樣我們的數據庫管理工具就能夠連接並管理docker中的mysql鏡像了。

掛載數據卷

每次啓動一個mysql鏡像的時候,數據庫都是空的,每次操作的時候都要重新建表,這個非常不友好。我們可以使用-v 來掛載本地的數據庫文件到mysql鏡像中的/var/lib/mysql目錄下。

docker run -i -t -v -p 3306:3306 /var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=hsulei mysql

但是,這樣掛載了數據卷的時候,我的workbench就無法訪問此時的mysql鏡像了。出現的問題是:不允許連接到數據庫。去google了一下,有的說是mysql對訪問的ip進行了閒置,只能是localhost進行連接,我進入了mysql鏡像中,查看配置後,返現在mysql鏡像中的配置文件中已經取消了訪問ip的限制。那問題出在哪呢,然後又看到有人說要修改系統表,把root用戶修改成任何ip都能訪問。這時想到,我是通過掛載數據卷的方式啓動的mysql鏡像。那麼在鏡像中的數據庫就是使用我本地的數據庫文件,也就是說在啓動的時候我沒有必要指定root用戶密碼,

進入本地的mysql對root數據進行修改:

mysql>use mysql;
mysql>update  user set host = '%' where user= 'root';
mysql>selecthost, userfromuser;

然後再通過掛載數據卷的方式,就能通過workbench愉快的玩耍了。(docker-compose,也是這樣)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章