찾다
데이터 베이스MySQL 튜토리얼在linux上使用源代码安装MySQL_MySQL

    由于工作和学习方面的原因,经常使用linux,前段时间折腾了几次linux上源代码方式安装mysql,期间也参考了网友的各种介绍,现在总结如下,方便自己以后查看,也方便其他人学习使用。

1 环境

    linux:CentOS 6.5/6.3 x86/x86_64均实验过

2 准备

    这里进行介绍所需要的软件或工具版本有:

        MySQL:mysql-5.5.37.tar.gz,cmake:cmake-2.8.12.2.tar.gz

    这些都可以到相应的官网下载,版本无关紧要,重要的是过程和方法。

    还要为linux安装gcc和gcc-c++以及ncurses-devel和由此产生的依赖,直接使用yum进行安装

yum install gcc gcc-c++ ncurses-devel
安装完后就可以进行正式的安装了。

3 安装cmake

将下载好的cmake-2.8.12.2.tar.gz上传到linux上,然后解包

tar -zxvf cmake-2.8.12.2.tar.gz
进入解压出来的目录,然后按照要求运行安装命令(中间可能要等一会儿)
cd cmake-2.8.12.2./boostrapmakemake install
这样就把cmake装好了,之后就可以安装MySQL了。

4 准备mysql用户和组以及目录

groupadd mysql useradd -g mysql mysql cd /usr/localmkdir mysqlcd mysqlmkdir datamkdir logcd ..chown -R mysql:mysql mysql
这样就创建了mysql的用户和用户组,也创建了安装的相关目录。这里的目录可以修改,但是要和接下来的安装配置相对应。

5 安装mysql

将下载的mysql-5.5.37.tar.gz上传到linux上,解压缩包

tar -zxvf mysql-5.5.37.tar.gz
进入源代码目录
cd mysql-5.5.37
使用cmake配置编译文件
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1  -DMYSQL_USER=mysql
这里面的目录要和之前准备的目录关联,如果提示出错的话还要删除cmake的缓存文件,修正错误,然后重新配置。

配置成功后就可以编译安装了,中间要等一段时间

makemake install

6 mysql的安装后配置

修改文件权限

chmod +w /usr/local/mysql/chown -R mysql:mysql /usr/local/mysql/
查看链接库的情况
ls /usr/local/mysql/lib
输出可能是这个样子的
libmysqlclient.a libmysqlclient_r.so.18.0.0 libmysqlservices.alibmysqlclient_r.a libmysqlclient.so pluginlibmysqlclient_r.so libmysqlclient.so.18libmysqlclient_r.so.18 libmysqlclient.so.18.0.0
要创建一个链接文件,如果具体的输出不一样,对应更改
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
进入源代码目录下面的配置文件目录
cd support-files/
复制相关配置文件
cp my-small.cnf /etc/my.cnf cp mysql.server /etc/rc.d/init.d/mysql
初始化安装,
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
为文件添加可执行权限
chmod +x /etc/init.d/mysql
修改配置文件,
vi /etc/init.d/mysql     找到修改为        basedir=/usr/local/mysql        datadir=/usr/local/mysql/data    mysqld_pid_file_path=/usr/local/mysql/log/mysql.pid
为mysql服务添加开机自动启动
chkconfig --add mysqlchkconfig --level 345 mysql on
具体的启动“等级”根据需要修改

前面都正确的话现在就可以启动服务了,

service mysql start
接下来是权限方面的配置

7 mysql的权限和用户配置

为可执行文件添加链接

ln -s /usr/local/mysql/bin/mysqladmin /usr/binln -s /usr/local/mysql/bin/mysql /usr/bin



这样就可以直接使用mysql和mysqladmin命令了,其他的根据需要再添加。

设置root用户(这个root是mysql的root用户)密码

mysqladmin -uroot password '你的密码'
接下来使用刚才的密码登录mysql
mysql -uroot -p(接下来会要求输入你的密码)
登陆成功后就可以配置具体的权限了,接下来的操作都是在“mysql>”提示符下进行的,表示已登录mysql。
use mysqlmysql> select user,password from user;
查询当前已有的账户,可以看到有很多没有密码的用户,这是需要删除的,
delete from user where password='';mysql> select user,password from user;
这样就会删除了空密码用户,然后在查看用户列表,就会发现只有一个用户了。

当前的用户还不能在除服务器外的机器上登录,这显然是不应该的,添加root用户远程拥有所有权限

grant all privileges on *.* to root@'%' identified by '你的密码' with grant option;
具体的场景下,如果要对权限进行限制,则需要修改具体的语句。

为每一个数据库创建单独的用户并分配全显示很有必要的,下面就是创建一个名为recruitdba的用户,并分配权限为所有主机操作recruit数据库的所有权限

CREATE USER 'recruitdba'@'%' IDENTIFIED BY 'recruitdba';grant all privileges on recruit.* to recruitdba@'%' identified by 'recruitdba' with grant option;flush privileges;

至此,mysql的安装和配制就完成了,具体的环境下有一些不一样的就需要灵活变通了

8 额外配置

有些时候会发现linux的防火墙会阻挡mysql的数据包,所以要添加防火墙规则

iptables -A INPUT -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -p tcp --sport 3306 -j ACCEPT service iptables save 进行保存service iptables restart重启



这样设置之后按道理说就应该正确了,但事实上从其他主机访问还是有问题,测试发现是防火墙的问题,

使用iptables -L -n查看到的这两条的顺序应该是这样

Chain INPUT (policy ACCEPT)target     prot opt source               destination         ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:3306 REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT)target     prot opt source               destination         REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT)target     prot opt source               destination         ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp spt:3306 
但是结果却是这样

Chain INPUT (policy ACCEPT)target     prot opt source               destination         ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:3306 Chain FORWARD (policy ACCEPT)target     prot opt source               destination         REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT)target     prot opt source               destination         ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp spt:3306 
就是这两条的顺序有问题

Chain INPUT (policy ACCEPT)…… REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:3306 
先拒绝,再允许,就允许不了了,

使用

 vi /etc/sysconfig/iptables



调整着两条记录的顺序,这样来的实在点,调整过后重启防火墙就行了




성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Alter Table 문을 사용하여 MySQL에서 테이블을 어떻게 변경합니까?Alter Table 문을 사용하여 MySQL에서 테이블을 어떻게 변경합니까?Mar 19, 2025 pm 03:51 PM

이 기사는 MySQL의 Alter Table 문을 사용하여 열 추가/드롭 테이블/열 변경 및 열 데이터 유형 변경을 포함하여 테이블을 수정하는 것에 대해 설명합니다.

MySQL 연결에 대한 SSL/TLS 암호화를 어떻게 구성합니까?MySQL 연결에 대한 SSL/TLS 암호화를 어떻게 구성합니까?Mar 18, 2025 pm 12:01 PM

기사는 인증서 생성 및 확인을 포함하여 MySQL에 대한 SSL/TLS 암호화 구성에 대해 설명합니다. 주요 문제는 자체 서명 인증서의 보안 영향을 사용하는 것입니다. [문자 수 : 159]

MySQL에서 큰 데이터 세트를 어떻게 처리합니까?MySQL에서 큰 데이터 세트를 어떻게 처리합니까?Mar 21, 2025 pm 12:15 PM

기사는 MySQL에서 파티셔닝, 샤딩, 인덱싱 및 쿼리 최적화를 포함하여 대규모 데이터 세트를 처리하기위한 전략에 대해 설명합니다.

인기있는 MySQL GUI 도구는 무엇입니까 (예 : MySQL Workbench, Phpmyadmin)?인기있는 MySQL GUI 도구는 무엇입니까 (예 : MySQL Workbench, Phpmyadmin)?Mar 21, 2025 pm 06:28 PM

기사는 MySQL Workbench 및 Phpmyadmin과 같은 인기있는 MySQL GUI 도구에 대해 논의하여 초보자 및 고급 사용자를위한 기능과 적합성을 비교합니다. [159 자].

드롭 테이블 문을 사용하여 MySQL에서 테이블을 어떻게 드롭합니까?드롭 테이블 문을 사용하여 MySQL에서 테이블을 어떻게 드롭합니까?Mar 19, 2025 pm 03:52 PM

이 기사에서는 Drop Table 문을 사용하여 MySQL에서 테이블을 떨어 뜨리는 것에 대해 설명하여 예방 조치와 위험을 강조합니다. 백업 없이는 행동이 돌이킬 수 없으며 복구 방법 및 잠재적 생산 환경 위험을 상세하게합니다.

외국 키를 사용하여 관계를 어떻게 표현합니까?외국 키를 사용하여 관계를 어떻게 표현합니까?Mar 19, 2025 pm 03:48 PM

기사는 외국 열쇠를 사용하여 데이터베이스의 관계를 나타내고 모범 사례, 데이터 무결성 및 피할 수있는 일반적인 함정에 중점을 둡니다.

JSON 열에서 인덱스를 어떻게 생성합니까?JSON 열에서 인덱스를 어떻게 생성합니까?Mar 21, 2025 pm 12:13 PM

이 기사에서는 PostgreSQL, MySQL 및 MongoDB와 같은 다양한 데이터베이스에서 JSON 열에서 인덱스를 작성하여 쿼리 성능을 향상시킵니다. 특정 JSON 경로를 인덱싱하는 구문 및 이점을 설명하고 지원되는 데이터베이스 시스템을 나열합니다.

일반적인 취약점 (SQL 주입, 무차별 적 공격)에 대해 MySQL을 어떻게 보호합니까?일반적인 취약점 (SQL 주입, 무차별 적 공격)에 대해 MySQL을 어떻게 보호합니까?Mar 18, 2025 pm 12:00 PM

기사는 준비된 명령문, 입력 검증 및 강력한 암호 정책을 사용하여 SQL 주입 및 무차별 적 공격에 대한 MySQL 보안에 대해 논의합니다 (159 자)

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는