Linux环境编译安装Mysql以及补装innodb引擎方法

本文详细介绍了在Linux系统中如何编译安装MySQL,包括安装C++编译环境、下载解压、创建用户、预配置编译、解决ncurses库问题、编译安装、初始化数据库、设置权限、调整库路径、添加为系统服务、启动与停止MySQL、设置环境变量、登录MySQL、修改root账号权限、Navicat连接MySQL以及补装InnoDB引擎的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql安装  5.6以后可能会收费,所以选择5.1

以下从台湾中山大学镜像下载


1.首先要安装C++编译环境

# yum install gcc-c++


2.下载解压

# wget http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-5.1/mysql-5.1.73.tar.gz
# tar zxvf mysql-5.1.73.tar.gz
# cd mysql-5.1.73


3.创建用户

运行MySQL数据库的系统用户、组
/sbin/nologin只是不允许系统login
# useradd mysql -M -s /sbin/nologin/mysql


4.预配置编译
# ./configure --prefix=/usr/local/mysql --with-charset=gbk --with-collation=gbk_chinese_ci --with-extra-charsets=all

预编译成功会出现下面的提示信息:



如果缺少ncurses安装包会出现提示:

configure: error: No curses/termcap library found

解决办法:

下载安装相应软件包

一、如果你的系统是RedHat系列:

#yum list|grep ncurses

#yum -y install ncurses-devel

#yum install ncurses-devel

 

二、如果你的系统是Ubuntu或Debian:

#apt-cache search ncurses

#apt-get install libncurses5-dev


5.编译安装
# make && make install

------------------------------------------------------------------------------

如果报错 mysql: Character set 'gbk' is not a compiled character set and is not specified in the '/usr/local/mysql/share/mysql/charsets/Index.xml' file

就是因为configure的时候没有指定charset可以按如下这样这样

# ./configure --prefix=/usr/local/mysql --with-charset=gbk --with-collation=gbk_chinese_ci
# ./configure --prefix=/usr/local/mysql --with-charset=gbk --with-collation=gbk_chinese_ci --with-extra-charsets=all
或者#make WITH_CHARSET=gbk BUILD_STATIC=yes install
或者#make WITH_CHARSET=gbk WITH_XCHARSET=all WITH_COLLATION=gbk_chinese_ci BUILD_STATIC=yes install

------------------------------------------------------------------------------

6.建立配置文件
在源码包目录中的support-files文件夹下,提供了多个MySQL服务器的配置文件样例文件,
分别适用于不同负载的数据库服务器,一般选择my-medium.cnf文件即可,适用于中等负载的数据库。
# cp support-files/my-medium.cnf /etc/my.cnf

------------------------------------------------------------------------------

7.初始化数据库
以mysql用户的身份执行mysql_install_db脚本,初始化数据库。修改相关目录所有权,以便mysql用户可以读写数据库。
# /usr/local/mysql/bin/mysql_install_db --user=mysql

系统已经提示你设置mysql账号以及密码的方式:

To do so, start the server, then issue the following commands:

/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'

------------------------------------------------------------------------------

设置权限

# chown -R root:mysql /usr/local/mysql
# chown -R root:mysql /usr/local/mysql/var

/usr/local/mysql下
# chown -R mysql:mysql *

------------------------------------------------------------------------------
8.调整lib库路径
由于MySQL安装到了非标准的路径中,所以需要将MySQL的库文件路径加入到系统库文件路径中去。
# echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
# ldconfig
------------------------------------------------------------------------------
9.将mysqld添加为系统服务

在MySQL源码包的suppory-files文件夹下,mysql.server文件可以用来作为mysqld服务的启动脚本。
# cp /usr/mysql-5.1.73/support-files/mysql.server /etc/init.d/mysqld
# chmod +x /etc/init.d/mysqld
# chkconfig --add mysqld
# chkconfig mysqld on
------------------------------------------------------------------------------
10.启动MySQL
# /etc/init.d/mysqld start
或者如果已经加入系统服务
# service mysqld start
或者
# /usr/local/mysql/bin/mysqld_safe --user=mysql &

启动报错:
启动mysql 报错,,Starting MySQL.Manager of pid-file quit without updating fi[失败]

出现这个问题,主要是,因为本服务器原来已经安装过mysql 应该是没有卸载干净,所以会报错.

第一,先删除rm -rf /var/lib/mysql,然后重新初始化usr/local/mysql/bin/mysql_install_db --user=mysql

第二, 看是否已经运行数据库进程了,ps -a|grep mysql
# service mysqld start
Starting MySQL.Manager of pid-file quit without updating file. [失败]
# ps -a|grep mysql
# kill -9 PID
#  ps -a|grep mysql
#  kill -9 PID
# service mysqld start
第三 权限问题
/usr/local/mysql下
# chown -R mysql:mysql *

ERROR 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
其实网上大家问的最多的都是整个问题,说什么链接不到mysqld.sock,其实大家不妨看看mysql的错误日志就明白怎么回事,我这里的错误日志是在
/var/lib/mysql/*.err 你会发现mysql只所以不能启动,是因为/var/lib/mysql的权限不允许mysql服务访问,英文mysql默认是调用mysql用户来启动服务的,好了,既然知道是什么原因找到不能启动,那就简单了。我们只要
chown -R mysql:mysql /var/lib/mysql 就行,如果还是启动不了,再慢慢调试权限,反正一般启动不了都是权限的问题。
如果大家还是不能启动不了的话,那就用我的比较繁琐的权限的设置,反正我每次都是这么做的,一般不会有问题,见下:
chown -R root /usr/local/mysql
chgrp -R mysql /usr/local/mysql
chown -R root /usr/local/mysql/bin
chgrp -R mysql /usr/local/mysql/bin
chgrp -R mysql /var/lib/mysql
chmod 777 /var/lib/mysql
chown -R root /var/lib/mysql/mysql
chgrp -R mysql /var/lib/mysql/mysql
chmod 777 /var/lib/mysql/mysql
chown -R root /var/lib/mysql/mysql/*
chgrp -R mysql /var/lib/mysql/mysql/*
chmod 777 /var/lib/mysql/mysql/*
chmod 777 /usr/local/mysql/lib/mysql/libmysqlclient.a

------------------------------------------------------------------------------
11.查看状态
# /etc/rc.d/init.d/mysqld status


12.停止
# /etc/rc.d/init.d/mysqld stop
或者
# /usr/bin/mysqladmin -u root -p shutdown
------------------------------------------------------------------------------

13.将mysql加入到系统变量path中
将/usr/local/mysql/bin 加入到path中,这样在shell里就可以运行mysql相关的命令。
# vi /etc/profile
加入
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH

------------------------------------------------------------------------------

14.登陆mysql
如果之前增加过环境变量直接
# mysql -u root -p
否则全路径
# /usr/local/mysql/bin/mysql -u root -p
Enter password: 密码    默认是空密码
显示所有的数据库
mysql> show databases;
选择你所创建的数据库
mysql> USE 数据库名
显示所选数据库的所有表
mysql> show tables;
退出
mysql> exit;或者mysql> quit;



------------------------------------------------------------------------------

15.修改root账号为本机外都可以访问
mysql>use mysql;

添加用户
mysql>GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";

改密码

mysql>update user set Password = password('123456') where User='root';
mysql>flush privileges;
mysql>exit;

------------------------------------------------------------------------------

16.Navicat连接mysql

Navicat Premium和NavicatMySQL都可以

Navicat 连接错误:
Mysql:is not allowed to connect to this MySQL server
如果你想连接你的mysql的时候发生这个错误:

ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server
解决方法:
1。 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
mysql>update user set host = '%' where user = 'root';mysql>select host, user from user;
mysql>flush privileges;


如果前面没有做修改root的密码或者你自己设置为空,那么要用空密码连接。切记,不能用之前设置的root12345那个用户名密码,那个默认只能本机访问


mysql这个数据库的数据表user,可以看到有好几个root账号,对应本机local和外机%

mysql是系统库不能删


图形化的界面还是比在命令行快多了。


Navicat for mysql中文保存出现乱码的解决办法

1.右键数据库里链接,选择“链接属性”

2.切换到“高级”选项卡下 把“使用mysql字符集”前面的“勾选”去掉

如果不这样设置就会出现输入中文,保存就是“???”


17.Mysql补装innodb引擎方法

先查看当前引擎

mysql> show engines;


没有innodb引擎。


然后需要确定,在mysql的'plugin_dir'下有ha_innodb_plugin.so和ha_innodb.so两个文件
查询'plugin_dir'的路径可以用以下命令
mysql> show variables like 'plugin_dir';



接下来就是在mysql命令行安装一下
mysql> INSTALL PLUGIN InnoDB SONAME 'ha_innodb.so';


再用show engines查一下就看到安装好了innodb引擎

mysql> show engines;


=======================================================

18.PHP连接mysql

中文不乱码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"  xml:lang="zh-CN" lang="zh-CN">
<head>
<meta http-equiv='Content-Type' content='text/html; charset=gbk'/> 
<title>PHP输出表格</title>
</head>
<body>
输出:</br>
<?php 
//header("Content-Type: text/html; charset=gbk");
$server_name="localhost:3306"; //数据库服务器名称 
$username="root"; // 连接数据库用户名 
$password="123456"; // 连接数据库密码 
$mysql_database="test"; // 数据库的名字 

// 连接到数据库 
$conn=mysql_connect($server_name, $username, $password); 

mysql_query("SET NAMES GBK");
//mysql_query("set names utf8");
//mysql_query("SET NAMES GB2312");
// 从表中提取信息的sql语句 
$strsql="select * from user_info"; 

//执行sql查询 
//mysql_select_db($mysql_database,$conn);
//$result=mysql_query($sql);
$result=mysql_db_query($mysql_database, $strsql, $conn); 

// 获取查询结果 
// 定位到第一条记录 
mysql_data_seek($result, 0); 

echo "<table border=\"1\">";
// 循环取出记录 
while ($row=mysql_fetch_row($result)) { 
echo "<tr>"; 
for ($i=0; $i<mysql_num_fields($result); $i++ ) { 
echo "<td>".$row[$i]."</td>"; 
}
echo "</tr>"; 
} 
echo "</table>";
// 释放资源
mysql_free_result($result); 

// 关闭连接 
mysql_close($conn);   
?>  
</body>
</html>


mysql示例employees数据库

------------------------------------------------------------------------------


参考:

mysql问题解决
在linux下安装mysql
MySQL数据库的安装与启动
mysqldump: Character set 'gbk' is not a compiled character set
Mysql:is not allowed to connect to this MySQL server
源码安装Mysql,补装innodb引擎方法

<think>我们正在处理用户的问题:如何给已安装的Nginx模块?根据引用内容,特别是引用[1]、[2]、[3]和[4],我们可以总结出以下步骤:步骤1:备份现有的Nginx配置文件和Nginx可执行文件。步骤2:找到之前编译Nginx时的配置参数(可以通过运行`nginx -V`命令查看)。步骤3:下载与当前安装版本相同的Nginx源码包。步骤4:在源码目录中重新配置,添加新模块(使用之前的配置参数,再加上新模块的配置选项)。步骤5:编译(注意:不要运行`makeinstall`,因为这会覆盖安装目录)。步骤6:将新编译的Nginx可执行文件替换旧的可执行文件(注意备份原文件)。步骤7:测试新Nginx是否正常工作,然后重启Nginx。下面详细展开:1.备份现有的Nginx配置和可执行文件:```bashcp -r /usr/local/nginx/conf/path/to/backup/nginx_conf_backupcp/usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak```2.查看当前Nginx的编译参数:```bashnginx-V```输出类似:nginxversion:nginx/1.17.10built bygcc8.4.120200928 (Red Hat8.4.1-1) (GCC)built withOpenSSL1.1.1g FIPS21 Apr2020TLSSNIsupport enabledconfigure arguments: --with-http_ssl_module--with-http_stub_status_module...记录下configure arguments后面的内容。3.下载相同版本的Nginx源码包(以1.17.10为例):```bashwget http://nginx.org/download/nginx-1.17.10.tar.gztar zxvfnginx-1.17.10.tar.gzcd nginx-1.17.10```4.重新配置,添加新模块(例如要添加`http_gzip_static_module`):使用之前的配置参数,并加上新的模块参数。假设之前有`--with-http_ssl_module--with-http_stub_status_module`,现在要加上`--with-http_gzip_static_module`:```bash./configure --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module```注意:这里只是示例,实际应使用步骤2中记录的所有参数,然后再加上需要添加的新模块参数。5.编译:```bashmake```注意:不要运行`makeinstall`,因为这会覆盖整个安装目录。6.替换Nginx可执行文件:编译后,在`objs`目录下会生成新的`nginx`可执行文件。先停止Nginx服务,然后替换:```bashservice nginx stop#或者使用systemctl stopnginxcp objs/nginx /usr/local/nginx/sbin/nginx```7.测试配置文件并启动Nginx:```bashnginx-tservice nginx start#或者使用systemctl startnginx```注意事项:-如果编译过程中出现错误,比如缺少依赖库,需要先安装相应的依赖。-如果新模块需要额外的依赖(如OpenSSL),请确保系统已安装这些依赖。引用说明:[^1]:引用[1]提到了备份配置文件和重新编译替换nginx的步骤。[^2]:引用[2]展示了在配置命令中添加新模块(如--with-http_ssl_module)的方法。[^3]:引用[3]说明了如何通过`nginx-V`查看已安装的模块,并提到在解压目录下安装。[^4]:引用[4]给出了一个包含多个模块的配置命令示例。根据以上步骤,用户可以完成Nginx模块的。生成相关问题:1.如何查看Nginx已安装的模块?2.重新编译Nginx时出现错误如何解决?3.如何为Nginx添加第三方模块?4.在添加新模块后,如何验证模块是否安装成功?5.为什么在重新编译Nginx时不能运行`make install`?</think>### 如何给已安装的 Nginx 模块 以下是详细操作步骤(假设 Nginx 安装路径为 `/usr/local/nginx`): #### 1. **备份现有配置** ```bash cp -r /usr/local/nginx/conf /root/nginx_conf_backup # 备份配置文件 cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak # 备份可执行文件 ``` #### 2. **查看当前编译参数** ```bash /usr/local/nginx/sbin/nginx -V ``` 输出示例(记录 `configure arguments` 内容): ``` nginx version: nginx/1.17.10 configure arguments: --with-http_stub_status_module --prefix=/usr/local/nginx ``` [^3] #### 3. **下载相同版本源码** ```bash wget http://nginx.org/download/nginx-1.17.10.tar.gz # 替换为你的版本 tar zxvf nginx-1.17.10.tar.gz cd nginx-1.17.10 ``` #### 4. **添加新模块重新编译** ```bash # 使用原有参数 + 新模块(例如 --with-http_ssl_module) ./configure --prefix=/usr/local/nginx \ --with-http_stub_status_module \ # 原有参数 --with-http_ssl_module # 新增模块 make # 仅编译安装 ``` [^2][^4] #### 5. **替换可执行文件** ```bash # 停止 Nginx /usr/local/nginx/sbin/nginx -s stop # 替换二进制文件 cp objs/nginx /usr/local/nginx/sbin/nginx # 验证版本 /usr/local/nginx/sbin/nginx -V ``` #### 6. **重启并测试** ```bash /usr/local/nginx/sbin/nginx nginx -t # 测试配置 ``` ### 关键注意事项 1. **版本一致性**:源码版本必须与已安装版本完全一致 2. **依赖处理**:新模块可能需要额外依赖库(如 SSL 模块需 OpenSSL) 3. **零覆盖安装**:仅替换二进制文件,避免 `make install` 覆盖配置 4. **配置兼容**:新增模块后需在 `nginx.conf` 添加相关配置段 > 操作示例:添加 SSL 模块后需在配置中添加: > ```nginx > server { > listen 443 ssl; > ssl_certificate /path/to/cert.pem; > ssl_certificate_key /path/to/key.pem; > } > ``` > [^1][^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值