docker環境基於鏡像skiychan/nginx-php7,進行安裝
ps:skiychan/nginx-php7此鏡像已封裝nginx1.15.3+php7.2.9
1、環境配置
配置共享文件夾
配置端口映射
2、進入容器
docker run -dti -p 3306:3306 -v /www:/data/www --name dnmp skiychan/nginx-php7 /bin/bash
docker exec -ti dnmp /bin/bash
安裝mysql:
1)准備:
先進入目錄/usr/local/src
cd /usr/local/src
下載
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
解壓
tar -zxvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
復制到 /usr/local/mysql
cp -r mysql-5.7.22-linux-glibc2.12-x86_64 /usr/local/mysql
2)添加用戶和用戶組
添加系統mysql組
groupadd mysql
添加mysql用戶
useradd -r -g mysql mysql
3)安裝數據庫
切到mysql目錄
cd /usr/local/mysql
修改當前目錄擁有者為mysql用戶
chown -R mysql:mysql ./
安裝數據庫
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
生成了臨時密碼
執行以下命令創建RSA private key
bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
修改當前目錄擁有者為mysql用戶
chown -R mysql:mysql ./
4、配置my.cnf
vim /etc/my.cnf
[mysqld] character_set_server=utf8 init_connect='SET NAMES utf8' basedir=/usr/local/mysql datadir=/usr/local/mysql/data socket=/tmp/mysql.sock #不區分大小寫 (sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 這個簡單來說就是sql語句是否嚴格) lower_case_table_names = 1 log-error=/var/log/mysqld.log pid-file=/usr/local/mysql/data/mysqld.pid
添加開機啟動
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
修改
vim /etc/init.d/mysqld
添加路徑 在46行
basedir=/usr/local/mysql datadir=/usr/local/mysql/data
5)、啟動mysql service mysqld start
出現-bash: service: command not found
解決方式如下:
yum list | grep initscripts
會出現
initscripts.x86_64 9.49.30-1.el7_2.3 updates
# yum install initscripts
正常安裝完成之后就可以使用service命令
加入開機起動
chkconfig --add mysqld
6)登錄修改密碼
mysql -uroot -p 上面初始化時的密碼
如果出現錯誤 需要添加軟連接
ln -s /usr/local/mysql/bin/mysql /usr/bin
如果忘記初始密碼,可用下面的方式修改:
vi /etc/my.cnf
在[mysqld]的段中加上一句:skip-grant-tables
例如:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-grant-tables
保存並且退出vi。
重新啟動mysqld
# service mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
使用 root 用戶登錄到 mysql:mysql -u root
切換到mysql數據庫,更新 user 表:
update user set authentication_string = password('root'), password_expired = 'N', password_last_changed = now() where user = 'root';
在之前的版本中,密碼字段的字段名是 password,5.7版本改為了 authentication_string
退出 mysql,編輯 /etc/my.cnf 文件,刪除 skip-grant-tables=1 的內容
重啟 mysqld 服務,再用新密碼登錄即可