分享

ubuntu 16.04下mysql 5.7.19安装配置及python和c++连接配置

 520jefferson 2017-08-09
1、安装
sudo apt-get install mysql-server  mysql-client 安装过程中需要配置root的密码。
通过service mysql status 可以查看已经安装好的mysql的运行情况。
2、修改默认的存储文件和其他相关配置
配置文件:/etc/mysql/my.cnf
内容:
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
从上面看来,所以实际需要修改/etc/mysql/mysql.conf.d/mysqld.cnf文件,需要注意的是可不动sock文件,否则很容易报错。
A、添加client,不然sock报错
[client]
default-character-set=utf8
socket      = /var/run/mysqld/mysqld.sock
B、配置utf8编码
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
C、修改datadir = (your data path)
原有的东西拷贝过去:cp -arf  /var/lib/mysql  (your data path)/mysql
授权:sudo chown -R mysql.mysql mysql
D、注释掉配置文件里面的bind-address = 127.0.0.1,开启远程访问
E、需要selinux设置为disable和apparmor相关路径修改,二者语mysql有限制
selinux 设置为disable,可以通过getenforce查看,通过setenforce 0 直接设置。若命令不存在安装一下包 
apparmor,在 /etc/apparmor.d/usr.sbin.mysqld 这个文件中,规定了mysql使用的数据文件路径权限 
 /var/lib/mysql/ r, /var/lib/mysql/** rwk,  
其中/var/lib/mysql/就是之前mysql安装的数据文件默认路径,apparmor控制这里mysqld可以使用的目录的权限  照上面那两条,注释掉上面的,增加下面这两条就可以了 
(your data path)/mysql/ r, 
(your data path)/mysql/** rwk, 
重启: sudo service apparmor restart

3、sudo /etc/init.d/mysql restart 启动mysql
通过sudo service mysql start/stop来启动和停止mysql,确定没问题
通过/var/log/mysql/error.log来定位错误
如果遇到问题了实在解决不了可以sudo apt-get autoremove mysql* --purge,删除了在重新装

4、grant all on 数据库名.* to '用户名' identified by '密码';
给用户授予某数据库的访问权限,其中db事先建立好。注意text字段有strict mode模式,这种模式下不能设置默认值为‘’

5、python连接db
从git下载包:https://github.com/PyMySQL/PyMySQL
下载后解压,然后通过python setup.py install --user 安装到当前用户目录下。

# -*- coding:utf-8 -*- import pymysql #创建连接 con = pymysql.connect(host='***', port=3306, user='***', passwd='***', db='***', charset='utf8') # 创建游标 cursor = con.cursor()
# 执行SQL,并返回收影响行数 effect_row = cursor.execute("select * from table")
#获取首行的结果 row_1 = cursor.fetchone()
# 获取剩余结果前n行数据 row_2 = cursor.fetchmany(3) # 获取剩余结果所有数据 row_3 = cursor.fetchall()
con.commit() cursor.close()
con.close()

6、c++连接db
#include <iostream>
#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>
using namespace std;

int main(int argc, char* argv[])
{
    //准备mysql的访问结构
    MYSQL mysql;
    mysql_init( &mysql );
    mysql_real_connect(
        &mysql,
        "***",   //要访问数据库的IP地址
        "***",         //用户名
        "***",         //密码
        "***",         //要访问的数据库
        3306,           //该数据库的端口
        NULL,           //一般为NULL
        0           //一般为0
    );

  //插入
  string sql = "insert into table(字段1,字段二) values ('***','***')";
  //执行sql语句
  mysql_query(&mysql,"SET NAMES utf8");  //防止中文乱码
  mysql_query( &mysql, sql.c_str() );
  //关闭数据库连接
  mysql_close( &mysql );
  return 0;
}


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多