标签: mysql

  • docker本地开发thinkphp

    本地开发thinkphp可以使用docker-compose来配置一个本地的开发环境,要是使用到的镜像有php,nginx,mysql,phpmyadmin,主要用的是前两个,后面两个可以根据项目来判断是否需要。

    文件目录如下

    1. docker文件夹放dockerfile和其他配置文件
    2. html文件夹放thinkphp源码
    3. log是nginx的日志文件
    4. mysql是mysql的数据文件夹
    5. docker-compose.yml

    首先我们新建文件夹mythinkphp,并在文件夹中创建docker-compose.yml文件。

    你需要将下面配置中的mysql环境变量定义成自己的,有了这些你就可以使用phpmyadmin的后台管理数据库了。

    version: '3.9'
    services: 
      db:
        image: mysql:5.7
        volumes:
          - ./mysql:/var/lib/mysql
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: yourpassword//1设置root的密码
          MYSQL_DATABASE: thinkphp//2设置数据库名
          MYSQL_USER: thinphp//3设置数据库用户名
          MYSQL_PASSWORD: &fhf%$#pa//4设置数据库密码
        depends_on:
          - php
      nginx:
        build: ./docker/nginx/
        container_name: nginx-container
        ports: 
          - 1234:80
        volumes:
          - ./html:/var/www/html
          - ./log:/var/log/nginx/
        links:
          - php
      php:
        # image: php:7.4-fpm
        build: ./docker/php/
        container_name: php-container
        expose:
          - 9000
        volumes: 
          - ./html:/var/www/html
          # - ./phpconfig:/usr/local/etc/php/
      phpmyadmin:
        image: phpmyadmin
        restart: always
        ports:
          - 8080:80
        depends_on:
          - db

    如何再创建一个docker的文件夹,主要放镜像的dockerfile文件和其他配置文件

    /docker/nginx/Dockerfile

    FROM nginx:latest   
    COPY ./default.conf /etc/nginx/conf.d/default.conf

    nginx的配置文件/docker/nginx/default.conf

    server {  
    
         listen 80 default_server;  
         root /var/www/html/tp5/public;  
         index index.html index.php;  
    
         charset utf-8;  
    
    
    
         location / {
             if (!-e $request_filename) {
       		rewrite  ^(.*)$  /index.php?s=/$1  last;
              }
         }  
    
         location = /favicon.ico { access_log off; log_not_found off; }  
         location = /robots.txt { access_log off; log_not_found off; }  
    
         access_log off;  
         error_log /var/log/nginx/error.log error;  
    
         sendfile off;  
    
         client_max_body_size 100m;  
    
         location ~ .php$ {  
          fastcgi_split_path_info ^(.+.php)(/.+)$;  
          fastcgi_pass php:9000;  
          fastcgi_index index.php;  
          include fastcgi_params;  
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  
          fastcgi_intercept_errors off;  
          fastcgi_buffer_size 16k;  
          fastcgi_buffers 4 16k;  
        }
    
         location ~ /.ht {  
          deny all;  
         }  
        } 

    php的容器生成文件/docker/php/Dockerfile

    FROM php:7.4-fpm
    RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
    RUN docker-php-ext-install mysqli pdo_mysql

    接下来我们将thinkphp的文件放入tp5的文件夹,并放到html文件夹中

    设置完成后,我们就可以启动本地环境了

    docker-compose up -d
    • 加-d参数意思在后台启动服务

    关闭本地环境

    docker-compose down

    这就是thinkphp用docker的方式配置的的本地开发环境。

  • Mysql数据库常用操作

    一,连接/取消连接数据库服务器操作

    连接数据库服务器操作

    mysql -u root -p

    取消连接数据库服务器

    quit
    连接和取消连接数据库服务器操作

    二,创建和使用数据库

    展示数据库列表

    SHOW DATABASES;

    创建一个名叫test的数据库

    CREATE DATABASE test;

    以下是 MySQL 命令行的一些基本操作:

    1. 连接到 MySQL 数据库:在命令行中输入 mysql -u <username> -p 命令,然后输入密码。
    2. 显示所有可用的数据库:在 MySQL 命令行中输入 show databases; 命令。
    3. 选择数据库:在 MySQL 命令行中输入 use <database_name>; 命令,其中 <database_name> 是要选择的数据库的名称。
    4. 显示数据库中的所有表:在 MySQL 命令行中输入 show tables; 命令。
    5. 显示表的结构:在 MySQL 命令行中输入 describe <table_name>; 命令,其中 <table_name> 是要查看的表的名称。
    6. 查询数据:在 MySQL 命令行中输入 select * from <table_name>; 命令,其中 <table_name> 是要查询的表的名称。
    7. 插入数据:在 MySQL 命令行中输入 insert into <table_name> (column1, column2, column3) values ('value1', 'value2', 'value3'); 命令,其中 <table_name> 是要插入数据的表的名称,column1, column2, column3 是要插入的列的名称,value1, value2, value3 是要插入的值。
    8. 更新数据:在 MySQL 命令行中输入 update <table_name> set column1='value1' where column2='value2'; 命令,其中 <table_name> 是要更新的表的名称,column1='value1' 是要更新的列和值,where column2='value2' 是要更新的行的条件。
    9. 删除数据:在 MySQL 命令行中输入 delete from <table_name> where column='value'; 命令,其中 <table_name> 是要删除数据的表的名称,where column='value' 是要删除的行的条件。
    10. 退出 MySQL 命令行:在 MySQL 命令行中输入 exit 命令或者使用快捷键 Ctrl + D
  • docker-compose thinkphp连接mysql出现错误(HY000/2002): Connection refused

    db:
        image: mysql:5.7
        volumes:
          - ./mysql:/var/lib/mysql
        restart: always

    根据doker-compose.yml里面文件数据库的配置命名db,php中连接的 mysql 地址就是 db,不用 localhost 或127.0.0.1

    如果是thinkphp5的话,修改config/database.php里面数据库的地址为db

    如果是thinkphp6的话,修改根目录下的.env文件

    APP_DEBUG = true
    
    [APP]
    DEFAULT_TIMEZONE = Asia/Shanghai
    
    [DATABASE]
    TYPE = mysql
    HOSTNAME = db //这里改成docker中数据库的命名
    DATABASE = mydatebase
    USERNAME = root
    PASSWORD = password
    HOSTPORT = 3306
    CHARSET = utf8
    DEBUG = true
    
    [LANG]
    default_lang = zh-cn