首页 » LANMP » mysql » 正文

编译mysql5.7

mysql官网:mysql.com

系统:CentOS6.5_x64

mysql版本:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.17.tar.gz

 

安装

或者,这样配置:

如果重新编译需要删除CMakeCache.txt

tips:
在ubuntu里 gcc-c++ 为 g++,ncurses 为 libncurses5 ,ncurses-devel 为 libncurses5-dev

我的Ubuntu里的cmake配置为

tips:
不知为什么,ubuntu下-DWITH_SSL=system 会出错,可是我的系统明明是安装了openssl的,并且正确配置了环境变量

如何查找mysql配置文件所在:

这代表它mysql会读取配置文件,按顺序读,直到找到my.cnf配置文件为止

其实,在你执行 sudo make install 后,会在你的mysql应用目录(不是源码目录哦)里拷贝一个叫做”supports-files”的目录,你会发现有个my-default.cnf ,把它拷贝到前面3个文件夹中任何一个 (注意顺序)。
同时你要更改my.cnf的所有者。

-DSYCONFDIR=/etc/ 此处为指定配置文件地址
-DMYSQL_DATADIR=/data/mysql/dbdata 此处为指定数据库数据文件存放地址
-DWITH_BOOST=boost 使用boost库

MySQL的配置文件

其实,很多人反映,copy完MySQL程序后,在”supports-files”并没有my-default.cnf这个模板文件。

重要参数设置

 

启动

一. 在系统中创建一个用户

cat /etc/my.cnf  可以看到
user=mysql 。说明它用了mysql这个用户来启动
所以要创建用户

-M代表不生成 Home目录
-s 后面的内容,代表不允许登录。

 

二. 启动脚本

1、配置文件在 /etc/my.cnf

2、官方帮我们做了贴心的启动脚本
/usr/local/mysql/support-files/mysql.server (这是一个脚本文件)

把这个文件拷贝到/etc/init.d/里面。譬如命名为mysqld

chkconfig mysqld on  这样就加入了service 管理
赋予权限

再来看配置文件

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

说明这个mysql文件夹,需要让mysql用户有权限访问

 

三. 初始化mysql

来到 mysql的安装目录里的bin目录里

我们自己的放这里

 

四. 启动mysql

接下来就是赤裸裸的 service mysqld restart  了

也可以用mysqld_safe来启动mysql

这么启动mysqld会在当前会话卡住,那么如何关闭mysqld呢?我们再开一个会话。
依旧在mysql的bin目录中输入:

进入mysql客户端

输入密码

进入mysql后,随便操作个sql就会提示修改密码

修改密码:

安装完成后必须初始化数据库
mysql5.7之前是使用 mysql_install_db --user=mysql
mysql5.7之后使用 mysqld --initialize --user=mysql --basedir=/var/lib/mysql --datadir=/data/mysql/dbdata

然后会报这类错误:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)

原因:
在my.cnf里必须配置

初步配置如下:

 

如果datadir不为空,会报这样的错误:

则初始化时需将datadir指向目录清空

2017-01-04T09:14:45.186240Z 0 [ERROR] Can’t find error-message file ‘/usr/local/mysql57/bin/share/errmsg.sys’. Check error-message file location and ‘lc-messages-dir’ configuration directive.
2017-01-04T09:14:45.186687Z 0 [ERROR] –initialize specified but the data directory has files in it. Aborting.
2017-01-04T09:14:45.186715Z 0 [ERROR] Aborting

Ubuntu下设置MySQL使用systemctl启动,和开机启动

系统:ubuntu-16.04.3

将以下内容写入到 /etc/systemd/system/mysqld.service 中

然后执行

如果权限等设置正确的话,你的MySQL就已经正常启动了

参考:https://superuser.com/questions/384365/systemctl-enable-differs-from-systemctl-start-how/384670

顺便谈谈navicat premium在ubuntu下的非付费使用方式

navicat premium下载地址:https://www.navicat.com/download/navicat-premium

如何永久试用呢?

下载回来后,解压,在其根目录下执行 ./start_navicat 会自动去网上下载一些比如wine,mono之类的库,然后帮你安装妥当。但是,只有十四天(我现在的版本是这个试用期)试用时间。那么如何长期试用下去呢?
在你的家目录下,有个隐藏文件夹 .navicat64, 每次执行 ./start_navicat 都会自动创建 。这个.navicat64 在你的家目录下执行 ls -a 就可以看到啦! 进入.navicat64 ,执行 ls -a 可以看到以下文件和文件夹:

只要每次启动都删掉 system.reg 和 user.reg 这两个文件就可以无限期的使用下去了。
我把这个操作直接写入到 start_navicat 的开头了

navicat 连接mysql8.0.11 报错解决方案

从MySQL 8.0.4开始,MySQL服务器的默认身份验证插件从mysql_native_password更改为caching_sha2_password。 相应地,libmysqlclient也使用caching_sha2_password作为默认身份验证机制。

但是,navicat客户端找不到 caching_sha2_password 插件,于是登录不上。

解决方案:

将MySQL服务器的加密方式修改下就可以了,因为目前navicat客户端支持的这种native加密方式。

参考:

MySQL 8.0.4 : New Default Authentication Plugin : caching_sha2_password

发表评论

正在加载验证码......

请先完成验证