代码改变世界

Ubuntu 20.04.1 LTS 编译安装 mysql5.6

2024-01-05 16:12  猎手家园  阅读(939)  评论(0编辑  收藏  举报

由于业务系统较老,需要安装低版本mysql

在Ubuntu 20.04下安装mysql5.6,试了很多方法都失败了,最后编译安装成功了。

ubuntu22.04 和 ubuntu24.04 没有安装成功!

1、看下有没有其它版本的mysql,有的话就卸载掉

#查询
dpkg -l | grep mysql

#如果有则卸载
apt-get remove --purge <mysql程序名称>

 

2、安装依赖

sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install libssl-dev
sudo apt-get install libncurses-dev

 

3、安装cmake,必须是这个版本

wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz
tar -xzvf cmake-2.8.10.2.tar.gz
cd cmake-2.8.10.2
./bootstrap
make
sudo make install

安装完成后看一下,安装在什么位置了

#检查是否安装成功
root@ubuntu:~# whereis cmake
cmake: /usr/local/bin/cmake /usr/share/cmake

root@ubuntu:~# cmake -version
cmake version 2.8.10.2

 

4、新增用户组

groupadd mysql

5、新增mysql用户

useradd -r -g mysql mysql

6、新建mysql安装目录

mkdir -p /usr/local/mysql

7、新建mysql数据库数据文件目录

mkdir -p /data/mysqldb
mkdir -p /data/mysqllog

 

8、下载mysql

wget http://www.kakapart.com/files/mysql-5.6.51.tar.gz  
tar -zxv -f mysql-5.6.51.tar.gz  
cd mysql-5.6.51  

9、cmake编译

cmake \   
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \   
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \   
-DDEFAULT_CHARSET=utf8 \   
-DDEFAULT_COLLATION=utf8_general_ci \   
-DWITH_INNOBASE_STORAGE_ENGINE=1 \   
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \   
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \   
-DMYSQL_DATADIR=/data/mysqldb \   
-DMYSQL_TCP_PORT=3306 \   
-DENABLE_DOWNLOADS=1  

10、删除cmake缓存

rm CMakeCache.txt

11、编译

make

12、安装

make install

 

13、修改mysql目录所有者和组

cd /usr/local/mysql   
chown -R mysql:mysql .        #注意后面的小数点,表示当前目录,不能省略。

cd /data/mysqldb  
chown -R mysql:mysql . 

cd /data/mysqllog chown -R mysql:mysql .

在 /data/mysqllog 下创建一个 error.log 的文件

cd /data/mysqllog
touch error.log
chown -R mysql:mysql error.log

记录一下:mysql安装完成后,重新启动服务器后,发现mysql启动不了,总时提示超时,怎么解决都不行。后来发现用户组和用户莫名不起作用了,重新授权了一下可以了。 

 

14、初始化mysql数据库

cd /usr/local/mysql   
scripts/mysql_install_db --user=mysql --datadir=/data/mysqldb

 

15、配置启动参数

cd /usr/local/mysql
cp support-files/my-default.cnf /etc/my.cnf    #注:如果/etc/my.cnf文件存在则覆盖

修改配置文件:

vim /etc/my.cnf

# ******************** mysql config ********************
[mysqld]
# MySQL安装目录
basedir = /usr/local/mysql

# 数据文件存储的位置
datadir = /data/mysqldb

# MySQL监听的端口号,默认为3306
port = 3306

# 服务器默认字符集
character-set-server=utf8

# 用于本地连接的套接字文件路径
socket = /usr/local/mysql/mysql.sock

# 最大连接数
max_connections = 151

# 单个日志大小
max_binlog_size = 100M

# 自动删除旧的二进制日志天数
expire_logs_days = 14

# 错误日志位置
log-error = /data/mysqllog/error.log

# 语法校验规则
# NO_ENGINE_SUBSTITUTION:如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常
# STRICT_TRANS_TABLES:如果一个值不能插入到一个事务中,则中断当前的操作,对非事务表不做限制
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

 

16、配置环境变量

cd /usr/local/mysql
cp support-files/mysql.server /etc/init.d/mysqld vim /etc/profile
export MYSQL_HOME=/usr/local/mysql export PATH
=$PATH:$MYSQL_HOME/bin:$MYSQL_HOME/lib source /etc/profile #使用环境变量生效

 

17、启动mysql

service mysqld start    #启动
service mysqld stop     #停止
service mysqld status   #状态

或者

systemctl start  mysqld
systemctl stop   mysqld
systemctl status mysqld

如果提示 mysql.service 命令找不到,那么重启下服务器!

检查是否启动成功

netstat -tulnp | grep 3306

 

18、开机启动

#创建一个服务
vim /lib/systemd/system/mysql.service

#输入以下内容
[Unit]
Description=mysql
After=network.target

[Service]
Type=forking
ExecStart=service mysqld start
ExecReload=service mysqld restart
ExecStop=service mysqld stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target
# 重新加载服务
systemctl daemon-reload

# 设置开机自启动
systemctl enable mysql.service

# 取消开机启动
systemctl disable mysql.service

# 查看是否成功
systemctl is-enabled mysql

 

19、进入mysql

mysql -u root -p       #初始密码为空,如果能登陆上,则安装成功。 

 

如果遇到:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)   
解决:新建一个链接或在mysql中加入-S参数,直接指出mysql.sock位置。  

ln -s /usr/local/mysql/mysql.sock /tmp/mysql.sock

或者直接指定sock位置登录:

/usr/local/mysql/bin/mysql -u root -S /usr/local/mysql/mysql.sock

 

20、修改密码

#进入mysql目录
cd /usr/local/mysql/bin

#设置密码
./mysqladmin -u root password '123456'

或者

mysql> use mysql;
mysql> select host, user, password from user;
mysql> UPDATE user SET password = PASSWORD('123456') WHERE user = 'root';
#允许远程访问
mysql> UPDATE user SET host = '%' WHERE user = 'root' AND host = 'localhost';
mysql> FLUSH PRIVILEGES;