LMAP项目 小试

鉴于最近想做一个工具,方便自己查询数据的数据库,并基于数据库实现页面,做的一个小项目试手:

对于本次试手的小项目,我采用的是ubuntu + Mysql + Apache2 + HTML ,仿照LMAP架构
LMAP = Linux + MySQL + Apache2 + Python

主要组成:

Aapche2简介:

  设备:ubuntu16.04

              apache2.4.18

  注意:1. ubuntu或linux下找不到apache服务器配置文件httpd.conf

              2. 配置系统的说明在/usr/share/doc/apache2/README.Debian.gz中

安装:

        sudo apt-get install apache2

        浏览器输入localhost验证,可以的话即可

        sudo /etc/init.d/apache2 stop  关   start 开

        systemctl status apache2查看apache的状态

        可以参考:https://jingyan.baidu.com/article/6d704a130c8a0d28da51ca5f.html

说明:

         当访问本机的时候,默认进入的页面是/var/www/html/index.html

         默认目录的更改。默认的目录其实是记录在:/etc/apache2/sites-available/000-default.conf 文件中"DocumentRoot ”键对应的值就是默认的目录了,可以任由我们修改。

         顺手把/var/www的权限设置为777方便修改网页

         配置系统的说明在/usr/share/doc/apache2/README.Debian.gz中

参考文章:

    https://www.cnblogs.com/enjoyphp/p/linux002.html

    https://www.cnblogs.com/lovemo1314/p/5623762.html


CGI简介:

  cgi官方文档:https://boutell.com/cgic/#whatis

  本次项目使用的cgi是207版本

注意:

      cgic  一套封装好的c函数  用于编写cgi,配套cgic.h文件,一起和C语言一起用。

      写的.c文件编译生成.cgi 文件放在cgi-bin目录下

      使用cgic时    #include "cgic.h"

      在使用cgic时,不需要自己封装主函数  而是使用一个叫  cgiMain

      编译时 需要  gcc +源码.c  + cgic.c  -o ??.cgi

      测试的时候  本机地址/cgi-bin/??.cgi  (端口号不是80 需要在地址后面:端口号来指定)

      有很多接口函数,例如如下

          cgiFormResultType cgiFormString( char *name, char *result, int max)

               name  比对的类型

               result  结果存放的数组

               max  存储的大小


 

Mysql简介:

  mysql的官方文档 :

              https://dev.mysql.com/doc/refman/5.7/en/ 

  先看Mysql的版本,然后看官方文档,然后学习 

     我用的是5.7.24

安装

  Ubuntu 16.04下安装MySQL

       https://www.linuxidc.com/Linux/2017-06/144805.htm

  安装MySQL及问题解决,删除

     https://www.linuxidc.com/Linux/2017-05/143861.htm

  配置文件位置

          sudo vim /etc/mysql/my.cnf

          mysql.h在/usr/include/mysql/目录下

          gcc -o a.out test.c -L/usr/lib/mysql -lmysqlclient          //ubuntu C语言连接编译

MySQL命令:

  登录 MySQL

        当 MySQL 服务已经运行时, 我们可以通过 MySQL 自带的客户端工具登录到 MySQL 数据库中, 首先打开命令提示符, 输入以下格式的命名:

        mysql -h 主机名 -u 用户名 -p

        参数说明:

                -h : 指定客户端所要登录的 MySQL 主机名, 登录本机(localhost 或 127.0.0。1)该参数可以省略;

                -u : 登录的用户名;

                -p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。

                如果我们要登录本机的 MySQL 数据库,只需要输入以下命令即可:

                        mysql -u root -p

  启动MySQL

          service mysql restart  重启mysql

          service mysql start 

          service mysql stop 

          systemctl status mysql.service      验证mysql工作状态

          sudo netstat -tap | grep mysql        确认是否启动成功:

  基本操作:

          select version();                                                 查看mysql的版本号

          show global variables like 'port';                    查看mysql的端口号

          show databases;                                                 查看当前的数据库

          use mysql;                                                           我们选择 mysql数据库,以后的操作都是mysql

          show tables;                                                        显示当前数据库的表单 

          SHOW COLUMNS FROM 数据表:                显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。

          create database spdb1;                                      建立数据库

          show database;                                                   查看数据库

          create table users(userId varchar(8),userNamevarchar(8));             建立users表

          show tables;                                                         查看表

          insert into users values('0001','alex');           将数据写入users表中

          SELECT * from runoob_tbl WHERE runoob_author="菜鸟教程"; 查看users表中数据

          desc users;                                                            查看数据库users表结构

          select database();                                                当前选择的数据库

    use 数据库后,使用show databases就能查询所有数据库,如果想跳到其他数据库,用use 其他数据库名字

          show grants;                                               查看当前用户权限

          show grants for 'jack'@'%';                       查看某个用户的权限

 

MySQL C API

          mysql_query()执行一条 MySQL 查询。

          mysql_store_result            //https://blog.csdn.net/linux_ever/article/details/50654436

          mysql_use_result

     mysql_set_character_set():为当前连接设置默认字符集

          这里主要看官方文档

C语言链接mysql示例:

     https://www.cnblogs.com/uolo/p/6115448.html

     https://www.2cto.com/database/201711/698769.html

     http://www.jizhuomi.com/software/279.html

     https://blog.csdn.net/zxng_work/article/details/78926413#%E7%A7%BB%E6%A4%8Dmysql%E5%BA%93%E6%96%87%E4%BB%B6

        Mysql 常用命令

     https://www.cnblogs.com/zhuyp1015/p/3562346.html

参考文档:

     https://jingyan.baidu.com/article/90808022077516fd90c80f76.html


项目中遇到的问题

数据库的乱码问题:

        数据库编码分成 数据库字符集,表字符集,字段字符集  需区分

        乱码问题配置:

                1.安装的时候配置mysql的配置文件,把 character_set 变量都配置成utf8.

                2.建表之前记得给字段设置字符集 DEFAULT CHARSET=utf8;

                3.编码插入代码之前执行mysql_set_character_set设置成utf8

        mysql乱码:

      https://blog.csdn.net/ACMAIN_CHM/article/details/4174186

 

权限管理

        比如只允许你执行select操作,那么你就不能执行update操作。

        只允许你从某台机器上连接mysql,那么你就不能从除那台机器以外的其他机器连接mysql。

        mysql的两阶段验证 :

                第一阶段:服务器首先会检查你是否允许连接。因为创建用户的时候会加上主机限制,可以限制成本地、某个IP、某个IP段、以及任何地方等,只允许你从配置的指定地方登陆。

                第二阶段:如果你能连接,Mysql会检查你发出的每个请求,看你是否有足够的权限实施它。比如你要更新某个表、或者查询某个表,Mysql会查看你对哪个表或者某个列是否有权限。再比如,你要运行某个存储过程,Mysql会检查你对存储过程是否有执行权限等。

       http://www.cnblogs.com/Richardzhu/p/3318595.html

猜你喜欢

转载自www.cnblogs.com/A-c-e/p/10403121.html