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;