docker創建mysql容器:
sudo docker run -p 3308:3306 --name mysql56 -v /home/ray/data/mysql56:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6
主要是為了解決直接創建容器的時候報錯:
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock
參考了這位仁兄的文章Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock
創建nginx容器
sudo docker run --name nginx -p 80:80 -v /home/ray/data/nginx:/usr/share/nginx/html -d nginx:latest
把conf文件也映射出來
docker run --name nginx -p 80:80 -v /home/docker-nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/docker-nginx/log:/var/log/nginx -v /home/docker-nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx
創建phpmyadmin容器
docker run --name pma -p 58080:80 --link mysql56:db -d phpmyadmin/phpmyadmin
修改 /etc/mysql/mysql.conf.d/my.cnf
文件,設置MySQL的字符集:
# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0,
# as published by the Free Software Foundation.
#
# This program is also distributed with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms,
# as designated in a particular file or component or in included license
# documentation. The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have included with MySQL.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# The MySQL Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
[client]
default-character-set=utf8
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server=utf8
init_connect='SET NAMES utf8'
[mysql]
default-character-set=utf8
MySQL的環境變量查看
[root@MySQL mysql]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.36 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.36 |
+-----------+
1 row in set (0.00 sec)
mysql> show variables like 'have%ssl%';
+---------------+----------+
| Variable_name | Value |
+---------------+----------+
| have_openssl | DISABLED |
| have_ssl | DISABLED |
+---------------+----------+
2 rows in set (0.00 sec)
mysql> show variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
1 row in set (0.00 sec)
mysql> show variables like 'datadir';
+---------------+-------------------+
| Variable_name | Value |
+---------------+-------------------+
| datadir | /data/mysql_data/ |
+---------------+-------------------+
1 row in set (0.00 sec)
ubuntu下修改mysql5.7的密碼
首先找到my.cnf所在的文件夾
cd /etc/mysql/mysql.conf.d/
備份原始的配置文件
cp mysqld.cnf mysqld.cnf.init
編輯mysql.cnf
文件,在skip-external-locking的下一行添加skip-grant-tables,跳過密碼校驗
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
# 在這里添加
skip-grant-tables
重啟mysql服務并進入mysql
sudo service mysql restart
mysql
進入mysql之后修改密碼:
use mysql;
update user set authentication_string=password('root') where user='root';
flush privileges;
quit;
修改完成之后重啟mysql服務sudo service mysql restart
補充內容:使用mysql導入大文件sql時可能會報MySQL server has gone away錯誤,引用一下文章得以解決:
MySQL server has gone away錯誤的解決辦法
在我們使用mysql導入大文件sql時可能會報MySQL server has gone away錯誤,該問題是max_allowed_packet配置的默認值設置太小,只需要相應調大該項的值之后再次導入便能成功。該項的作用是限制mysql服務端接收到的包的大小,因此如果導入的文件過大則可能會超過該項設置的值從而導致導入不成功!下面我們來看一下如何查看以及設置該項的值。
查看 max_allowed_packet 的值
show global variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 4194304 |
+--------------------+---------+
可以看到默認情況下該項的大小只有4M,接下來將該值設置成150M(10241024150)
set global max_allowed_packet=157286400;
此時再查看大小
show global variables like 'max_allowed_packet';
通過調大該值,一般來說再次導入數據量大的sql應該就能成功了,如果任然報錯,則繼續再調大一些就行,請注意通過在命令行中進行設置只對當前有效,重啟mysql服務之后則恢復默認值,但可以通過修改配置文件(可以在配置文件my.cnf中添加max_allowed_packet=150M即可)來達到永久有效的目的,可其實我們并不是經常有這種大量數據的導入操作,所以個人覺得通過命令行使得當前配置生效即可,沒有必要修改配置文件。