linux环境mysql安装配置踩坑

背景:

最近公司项目希望改造工作流ACTIVITI5.x的源码框架支持大数据量(历史表单表数据达到10亿),

方案暂定为

1.使用动态数据源

2.将工作流归档历史数据数据保存到一个库中这里定义为读库,

3.在办办件的数据单独一个库可读可写,

4.查询历史数据的时候单独从归档库中查询(归档库中数据采用年月分区

哈哈我感觉很悬!!!!,我本来想使用大数据clickhouse后面被否定了,那我就按照领导的来吧,后面会记录使用clickhouse方案),

这里动态数据源我本地的,一个windows环境配置的mysql ,另外一个是在虚拟机上配置的mysql,没想到在虚拟机上配置mysql花费了我大量的时间特意记录一下。

linux环境安装mysql

官网:MySQL :: Download MySQL Community Server (Archived Versions)

 第一步:下载并上传到服务器上 mysql-5.7.37-linux-glibc2.12-i686.tar.gz

第二步:将安装包统一解压并放到/usr/local/下的mysql文件

tar -zxvf  mysql-5.7.37-linux-glibc2.12-i686.tar.gz

mv   【mysql-5.7.37-linux-glibc2.12-i686.tar.gz解压后文件】  /usr/local/mysql/     

注:没有mysql文件目录会移动时会自动创建(也可以手动创建)

第三步:在cd /etc/下创建mysql的配置my.cnf 

touch my.cnf 

添加如下配置

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
[mysql-safe]
log-error=/var/log/mysqld.log
pid-file=/var/local/mysql/mysql.pid
tmpdir=/tmp
[mysqld]
port=3307
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8                

第四步:添加用户及用户组

设置用户组

groupadd mysql  

新增用户

useradd -r -g mysql mysql

备注:

-r选项表示创建一个系统用户(system user),而不是一个普通用户。系统用户通常用于运行系统服务或应用程序,它们通常没有登录权限

-g选项用于指定用户所属的初始主要组

第五步:设置mysql数据存储目录 

这里设置在/usr/local/mysql/data下没有data手动创建data目录

mkdir data

第六步:设置/usr/local/mysql目录及子目录的用户权限

chown -R  mysql:mysql ./

注:这个命令是在usr/local/mysql目录下执行

第七步:初始化mysql

./mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize

注:

--basedir指定mysql的安装目录

--datadir 指明mysql的数据存储目录

正常情况下生成这样的图,圈起来的是初始密码,牢记注,可以复制出来备份!!!

这里说说遇到的特殊情况:

第一种情况:密码没记住

直接/usr/local/mysql/data/下的数据删除了重新执行一遍mysql初始化语句

第二种情况:初始化报错

mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory

这里可能与centos的版本有关,有问题的执行如下命令,没问题的跳过

yum install libnuma.so.1

yum -y install numactl
yum install libnuma
yum install ld-linux.so.2
yum install libaio.so.1
yum install libnuma.so.1
yum install libstdc++.so.6
yum install libtinfo.so.5

yum clean all
yum makecache

第八步:启动mysql

直接启动

/usr/local/mysql/support-files/mysql.server restart

/usr/local/mysql/support-files/mysql.server stop 
/usr/local/mysql/support-files/mysql.server start

也可以这样简化设置

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

service mysql star

第九步:登录mysql设置默认密码

mysql -uroot -p 

输入初始化备份的密码

登录后重新设置密码

SET PASSWORD = PASSWORD('wxy123456');

ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;

FLUSH PRIVILEGES;

第十步:开放远程连接

use mysql                                            #访问mysql库
update user set host = '%' where user = 'root';      #使root能再任何host访问
FLUSH PRIVILEGES;    
否则navicat连接不到

第十一步:检查防火墙端口是否开放

firewall-cmd  --list-port   ##检查开放端口

firewall-cmd --zone=public --add-port=3307/tcp --permanent   ##新增开放端口

firewall-cmd --reload     ##重新加载

第十二步:使用Navicat测试连接

第十三步:相关问题及总结

网上资料很多,踩了很多坑,尤其是这个问题按照提示的安装了还是错误 yum install libnuma.so.1花费了很多时间

问题一:mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory

把下面的都执行一遍

yum install libnuma.so.1

yum -y install numactl
yum install libnuma
yum install ld-linux.so.2
yum install libaio.so.1
yum install libnuma.so.1
yum install libstdc++.so.6
yum install libtinfo.so.5

yum clean all
yum makecache

问题二:登录提示Can't connect to local MySQL server through socket '/tmp/mysql.sock'
[root@localhost /]# mysql -u root -p
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

解决方式需要做一个软连接
[root@localhost /]# find / -name mysql.sock
/var/lib/mysql/mysql.sock
[root@localhost /]# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

 拓展:

在Linux系统中

MySQL数据库通常使用一个名为mysql.sock的Unix套接字(Unix socket)来与客户端通信。

这个套接字文件通常位于/var/lib/mysql/mysql.sock目录下。

但是,有些应用程序可能会默认使用/tmp/mysql.sock路径来连接MySQL,这时候就需要创建一个符号链接(symbolic link)将/tmp/mysql.sock链接到/var/lib/mysql/mysql.sock,以便让应用程序能够连接到MySQL。

因此,ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock命令的作用就是创建一个名为mysql.sock的符号链接,将/tmp/mysql.sock链接到/var/lib/mysql/mysql.sock。这样当应用程序连接到/tmp/mysql.sock时,实际上是连接到了/var/lib/mysql/mysql.sock

猜你喜欢

转载自blog.csdn.net/qq_38423256/article/details/134144428