背景:
在ubuntu1804的docker中安裝了mysql,版本是5.7.34。因為有復雜的數據要插入到數據庫中,所以從宿主機通過pycharm和DBeaver連接,但是一直報錯:
Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
解決方法分為兩步走
第一步:
修改mysql配置文件中的bind_address
vim /etc/mysql/mysql.conf.d/mysqld.cnf
數據庫不能遠程訪問多半是因為綁定了本地地址127.0.0.1.
第二步:
開啟用戶的遠程訪問權限。以root用戶為例。如果用戶沒有遠程訪問權限則即使數據庫能遠程訪問但因為用戶權限限制也會失敗。
開啟遠程訪問權限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
強制刷新權限:
flush privileges;
完成這兩步就可以遠程訪問到docker中的數據庫了