Flask中MySQL预热

Posted Flask学习笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask中MySQL预热相关的知识,希望对你有一定的参考价值。

Flask和mysql

导读

现在Flask已经学习到了类视图,它其实是这样一个关系

FLask高级视图

  • 视图函数app.route\add_url_rule

  • 类视图

  • 蓝图blueprint(这个接下来要讲)

结束蓝图后,接着就是Flask数据库的结合SQLAlchemy.在学习SQLAlchemy之前,希望和大家一起了解学习一下mysql

这篇文章不涉及理论,暂时是MySQL 的安装.

以下文章会在周末做成视频上传,以便对照操作.

Centos 安装配置

1.Centos安装

在虚拟机中安装了Centos,准备学习一下mysql,安装过程就不表述了

2.配置中文输入法,安装VMwork-Tool

配置中文输入法:

默认安装完毕之后没有中文输入法,但是可以自己手动调制出来:

直接进入控制中心,选择语言:点击左下角的 “+”号。找到Chinese(China) 或者其它Chinese(..)

直到找到Chinese(Intelligent Pinyin)为止.

装虚拟机工具,只需要把光盘中的压缩文件复制下来,解压缩安装,然后执行重启即可.

3.开启ssh

全部操作使用的是root账户

查看系统时候安装了open-ssh

 # yum list installed | grep ssh
 libssh2.x86_64                         1.4.3-10.el7_2.1               @anaconda
 openssh.x86_64                         7.4p1-11.el7                   @anaconda
 openssh-clients.x86_64                 7.4p1-11.el7                   @anaconda
 openssh-server.x86_64                  7.4p1-11.el7                   @anaconda

如果没有安装,使用yum命令安装

编辑ssh 的配置文件,以便支持ssh

 # vim /etc/ssh/sshd_config
 
 
 # 打开端口
 Port 22
 #AddressFamily any 打开监听任意主机
 ListenAddress 0.0.0.0
 ListenAddress ::
 
 # 打开远程登陆
 PermitRootLogin yes
 # 开启使用用户名密码来作为连接验证
 PasswordAuthentication yes

sshd 添加到自启动列表

 # systemctl enable sshd

启动服务

 # systemctl restart sshd.service

安装mysql

Centos: Centos7x64

Mysql:MySQL 5.7.32

1.下载安装包

官网:https://dev.mysql.com/downloads/mysql/

  • Select Operationg System中选择Source Code

  • 在下面的Select OS Version选择Generic Linux(Architecture Independent)

  • 然后再下面的部分可以看到Compressed TAR Archive,单击后面的Download

  • 在弹出的界面中选择最下面的No thanks, just start my download就可以开始下载了

下载boost

下载网址为:http://www.boost.org/users/download/ 这个版本的MySQL要求boost的版本是1.59.

 # wget --no-check-certificate http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

2.编译安装

安装必要的软件依赖

 # yum install -y cmake bison bison-devel libaio-devel gcc gcc-c++ git ncurses-devel

解压Mysql:

 # tar -zxvf mysql-5.7.32.tar.gz
 
 将boost压缩包移动到解压后的源文件中
 # mv boost_1_65_1.tar.gz mysql-5.7.32

进入Mysql源文件目录,新建configure作为编译目录

 # cd mysql-5.7.32
 # mkdir configure
 # cd configure

使用cmake进行编译安装

 # cmake .. -DBUILD_CONFIG=mysql_release \
 -DINSTALL_LAYOUT=STANDALONE \
 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
 -DENABLE_DTRACE=OFF \
 -DWITH_EMBEDDED_SERVER=OFF \
 -DWITH_INNODB_MEMCACHED=ON \
 -DWITH_SSL=bundled \
 -DWITH_ZLIB=system \
 -DWITH_PAM=ON \
 -DCMAKE_INSTALL_PREFIX=/var/mysql/ \
 -DINSTALL_PLUGINDIR="/var/mysql/lib/plugin" \
 -DDEFAULT_CHARSET=utf8 \
 -DDEFAULT_COLLATION=utf8_general_ci \
 -DWITH_EDITLINE=bundled \
 -DFEATURE_SET=community \
 -DCOMPILATION_COMMENT="MySQL Server (GPL)" \
 -DWITH_DEBUG=OFF \
 -DWITH_BOOST=..
 
 
 如果编译错误,需要删除 CMakeCache.txt,从新编译
 # rm -rf CMakeCache.txt

如果出现以下提示,表示成功:

 -- Configuring done
 -- Generating done

使用make进行编译;

 # mace
 
 # 编译成功的标识
 [100%] Building CXX object sql/CMakeFiles/udf_example.dir/udf_example.cc.o
 Linking CXX shared module udf_example.so
 [100%] Built target udf_example
 [100%] Built target my_safe_process

安装mysql

 # make install

3.初始化数据库

添加mysql用户,并设置数据库文件夹和日志文件

 useradd -s /sbin/nologin mysql
 
 mkdir /mysql_data
 mkdir /var/mysql/log
 chown -R mysql:mysql /mysql_data/
 chown -R mysql:mysql /var/mysql/log
 
 # 创建mysqld_safe 的文件夹
 mkdir /var/log/mariadb
 touch /var/log/mariadb/mariadb.log
 chown -R mysql:mysql /var/log/mariadb/
 chmod 755 /var/log/mariadb/

修改配置文件:

 # vim /etc/my.cnf
 
 # 在[mysqld]中添加
 [mysqld]
 port=3306
 datadir=/mysql_data/
 log_error=/var/mysql/log/error.log
 basedir=/var/mysql/
 socket=/var/lib/mysql/mysql.sock

初始化数据库

 #/var/mysql/bin/mysqld --initialize --user=mysql

查看数据文件和日志文件:

 [root@localhost ~]# ll /mysql_data/
 总用量 122920
 -rw-r-----. 1 mysql mysql       56 1027 03:45 auto.cnf
 -rw-r-----. 1 mysql mysql      419 1027 03:45 ib_buffer_pool
 -rw-r-----. 1 mysql mysql 12582912 1027 04:25 ibdata1
 -rw-r-----. 1 mysql mysql 50331648 1027 04:25 ib_logfile0
 -rw-r-----. 1 mysql mysql 50331648 1027 03:45 ib_logfile1
 -rw-r-----. 1 mysql mysql 12582912 1027 04:25 ibtmp1
 -rw-r-----. 1 mysql mysql        7 1027 04:25 localhost.pid
 drwxr-x---. 2 mysql mysql     4096 1027 03:45 mysql
 drwxr-x---. 2 mysql mysql     8192 1027 03:45 performance_schema
 drwxr-x---. 2 mysql mysql     8192 1027 03:45 sys
 
 [root@localhost ~]# ll /var/mysql/log/
 总用量 4
 -rw-r-----. 1 mysql mysql 802 1027 03:45 error.log

4.配置启动文件和环境

从模板文件中复制启动文件

 cp /var/mysql/support-files/mysql.server /etc/init.d/mysqld

修改启动文件

 # vim /etc/init.d/mysqld
 
 # 找到以下并修改
 
 basedir=/var/mysql
 datadir=/mysql_data

创建软连接

 ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

启动mysqld

 /etc/init.d/mysqld start
 Starting MySQL. SUCCESS!

设置mysql开机启动

 systemctl enable mysqld

配置环境变量

 # vim ~/.bash_profile
 
 # 修改为
 PATH=$PATH:$HOME/bin:/var/mysql/bin
 
 # source   ~/.bash_profile

5.修改root的登录密码

MySQL从5.7开始不支持安装后使用空密码进行登录,因此在这里需要先查询程序生成的临时密码

 # cat /var/mysql/log/error.log | grep password
 2019-10-26T19:45:57.455760Z 1 [Note] A temporary password is generated for root@localhost: <3FQ)ixj0gh<

初始密码是<3FQ)ixj0gh<

使用初始密码并登录,修改

 # mysql -uroot -p
 Enter password:
 
 mysql> alter user 'root'@'localhost' identified by 'your_password';
 Query OK, 0 rows affected (0.00 sec)

your_password 是自己设置的新密码(2008.Cn123)

6.开启远程链接

1.修改my.cnf

 vim /etc/my.cnf
 
 #找到bind-address = 127.0.0.1这一句,然后注释掉保存退出

2.在服务端开启支持

 mysql> grant all privileges on *.* to 'root'@'%' identified by 'password';
 mysql> flush privileges;
  • 第一个* ,匹配访问的数据库

  • 第二个*,匹配访问的表

  • root,表示登录的用户名

  • password:匹配root的密码

  • flush 即可生效

3.重启mysql

 service mysql restart

4.本地测试:

 mysql -h 服务器ip地址 -P 3306 -u root -p

使用客户端连接

下载MySQL Workbench并安装,测试链接数据库

安装mycli 并测试链接

 pip install mycli
 $ mycli --help
 Usage: mycli [OPTIONS] [DATABASE]
 
 Options:
 -h, --host TEXT               数据库的主机地址。
 -P, --port INTEGER           用于连接的端口号。Honors $MYSQL_TCP_PORT
 -u, --user TEXT               连接到数据库的用户名。
 -S, --socket TEXT             用于连接的套接字文件。
 -p, --password TEXT           连接到数据库的密码。
 --pass TEXT                   连接到数据库的密码。
 -v, --version                 mycli的版本输出。
 -D, --database TEXT           使用数据库。
 -R, --prompt TEXT             提示格式 (Default: "\t \u@\h:\d> ")
 -l, --logfile FILENAME       将每一个查询和它的结果记录到一个文件中。
 --defaults-group-suffix TEXT 读取指定的后缀的配置组。
 --defaults-file PATH         只从给定文件中读取默认选项。
 --auto-vertical-output       如果结果比终端更宽,自动切换到垂直输出模式。
 --login-path TEXT             从登录文件中读取此路径。
 --help                       显示此帮助消息

mycli开启多行模式

mycli 默认使用enter结束,mysql工具大多是使用; 来结束的.

临时开启方法:F3

修改配置开启:

 $ sudo vim ~/.myclirc
 
 
 # 找到并将它的值设置为True
 multi_line = True



以上是关于Flask中MySQL预热的主要内容,如果未能解决你的问题,请参考以下文章

python Flask - 数据库片段

Flask 编写http接口api及接口自动化测试

Flask模板jinja2

12_关于flask中的宏

flask之二 模板相关

Flask之模板之宏继承包含