ubuntu14源码安装mysql

环境

Docker version 18.06.3-ce, build d7080c1

Linux c5e082c17dae 4.4.0-31-generic #50~14.04.1-Ubuntu SMP

mysql-5.5.62

安装流程

创建用户
groupadd mysql
useradd mysql -g mysql -d /usr/local/mysql -s /bin/sh
解压安装
apt-get install libncurses5-dev bison libaio1

mkdir build
cd build

cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1  \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DSYSCONFDIR=/etc \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_BOOST=/usr/local/boost

-DCMAKE_INSTALL_PREFIX:安装路径
-DMYSQL_DATADIR:数据存放目录
-DWITH_BOOST:boost 源码路径
-DSYSCONFDIR:my.cnf 配置文件目录
-DEFAULT_CHARSET:数据库默认字符编码
-DDEFAULT_COLLATION:默认排序规则
-DENABLED_LOCAL_INFILE:允许从本文件导入数据
-DEXTRA_CHARSETS:安装所有字符集
-DWITH_INNOBASE_STORAGE_ENGINE=1:安装InnoDB存储引擎
-DDEFAULT_CHARSET=utf8:默认编码设置成utf8
-DWITH_EXTRA_CHARSETS=all:支持其他所有的编码
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock:指定SOCK文件路径

make
make install
# 注意新版的 mysql 安装完毕以后会自动在 etc 下创建一个 mysql 文件夹 ,文件夹内有 my.cnf 配置文件 但是我们不需要,直接删除即可
rm /etc/mysql/my.cnf

# 复制原 mysql 的配置文件 作为 etc 下的配置文件)
sudo cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf

# 编辑 my.cnf 文件 在[mysqld]下面添加以下内容
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
user=mysql
调整文件属性
# 目录和文件都属于mysql用户
chown -R mysql.mysql /usr/local/mysql/
chown -R mysql.mysql /usr/local/mysql/data
chown -R mysql.mysql /etc/my.cnf
初始化数据库
cd /usr/local/mysql
sudo scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/
修改root密码
/usr/local/mysql/bin/mysqladmin -u root password 'YOUR PASSWORD'
配置mysql服务
cp support-files/mysql.server /etc/init.d/mysqld
sysv-rc-conf keepalived on # 开机启动
启动服务
service mysqld start       # 启动mysql服务
service mysqld stop        # 停止mysql服务
service mysqld restart     # 重新启动mysql服务
配置环境变量
vim /etc/profile
#mysql
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH
source /etc/profile

遇到的问题

0 ‘cli_list_fields’ undeclared here (not in a function)

如果在根目录下就新建build里面编译,如果在build里面就在根目录下编译。

1 db open error: Driver not loaded Driver not loaded

因为你的qt没编译mysql驱动,只编译了sqllite的驱动。

查看/usr/local/qtbase/plugins/sqldrivers目录下,有没有mysql的so文件。如果有,复制到

/usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers/

如果没有

如果你的 mysql 也和我一样是自己安装的话还要下载一下 mysql 的动态库,不然会出现没有 lib 依赖包的情况。

sudo apt-get install libmysqlclient-dev

源码解压后找到你解压的目录,进入  /usr/local/qt-everywhere-opensource-src-5.9.2/qtbase/src/plugins/sqldrivers/mysql

开始编译

qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=/usr/lib/x86_64-linux-gnu/libmysqlclient.so" mysql.pro

make
make install

这样在  /usr/local/qt-everywhere-opensource-src-5.9.2/qtbase/plugins/sqldrivers  就能在你们找到你想要的驱动了,libqsqlmysql.so

最后复制到/usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers/下面就可以了

2 mysqld_safe Directory ‘/var/run/mysqld’ for UNIX socket file don’t exists.
mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
3 The server quit without updating PID file (/var/run/mysqld/mysqld.pid)

可能的解决方式:
1、可能是 / usr/local/mysql/data / 数据目录 mysql 用户没有权限(修改数据目录的权限)
解决方法 :给予权限,执行 sudo chmod -R 777 /usr/local/mysql/data/ 然后重新启动 mysql

2、可能进程里已经存在 mysql 进程
解决方法:用命令 “ps -ef|grep mysqld” 查看是否有 mysqld 进程,如果有使用 “kill -9 进程号” 杀死,然后重新启动 mysqld!

3、可能是第二次在机器上安装 mysql,有残余数据影响了服务的启动。
解决方法:去 mysql 的二进制日志目录看看,如果存在 mysql-binlog.index,就赶快把它删除掉吧

4、mysql 在启动时没有指定配置文件时会使用 / etc/my.cnf 配置文件,请打开这个文件查看在 [mysqld] 下有没有指定数据目录(datadir)。
解决方法:请在 [mysqld] 下设置这一行:datadir = /opt/mysql/data

5、skip-federated 字段问题
解决方法:检查一下 / etc/my.cnf 文件中有没有没被注释掉的 skip-federated 字段,如果有就立即注释掉吧。

6、错误日志目录不存在
解决方法:使用 “chown” “chmod” 命令赋予 mysql 所有者及权限

7、selinux 惹的祸,如果是 centos 系统,默认会开启 selinux
解决方法:先临时改为警告模式:[root@www php]# setenforce 0
然后打开 / etc/sysconfig/selinux,把 SELINUX=enforcing 改为 SELINUX=disabled

8、在data里看日志,哪报错解决哪。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值