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/
/usr/local/mysql/bin/mysqladmin -u root password 'YOUR PASSWORD'
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
如果在根目录下就新建build里面编译,如果在build里面就在根目录下编译。
因为你的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/下面就可以了
mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
可能的解决方式:
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里看日志,哪报错解决哪。