在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
4 准备mysql用户和组以及目录
groupadd mysql useradd -g mysql mysql cd /usr/localmkdir mysqlcd mysqlmkdir datamkdir logcd ..chown -R 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 -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
配置成功后就可以编译安装了,中间要等一段时间
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
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
设置root用户(这个root是mysql的root用户)密码
mysqladmin -uroot password '你的密码'
mysql -uroot -p(接下来会要求输入你的密码)
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

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Artikel ini membincangkan menggunakan pernyataan jadual Alter MySQL untuk mengubah suai jadual, termasuk menambah/menjatuhkan lajur, menamakan semula jadual/lajur, dan menukar jenis data lajur.

Artikel membincangkan mengkonfigurasi penyulitan SSL/TLS untuk MySQL, termasuk penjanaan sijil dan pengesahan. Isu utama menggunakan implikasi keselamatan sijil yang ditandatangani sendiri. [Kira-kira aksara: 159]

Artikel membincangkan strategi untuk mengendalikan dataset besar di MySQL, termasuk pembahagian, sharding, pengindeksan, dan pengoptimuman pertanyaan.

Artikel membincangkan alat MySQL GUI yang popular seperti MySQL Workbench dan PHPMyAdmin, membandingkan ciri dan kesesuaian mereka untuk pemula dan pengguna maju. [159 aksara]

Artikel ini membincangkan jadual menjatuhkan di MySQL menggunakan pernyataan Jadual Drop, menekankan langkah berjaga -jaga dan risiko. Ia menyoroti bahawa tindakan itu tidak dapat dipulihkan tanpa sandaran, memperincikan kaedah pemulihan dan bahaya persekitaran pengeluaran yang berpotensi.

Artikel membincangkan menggunakan kunci asing untuk mewakili hubungan dalam pangkalan data, memberi tumpuan kepada amalan terbaik, integriti data, dan perangkap umum untuk dielakkan.

Artikel ini membincangkan membuat indeks pada lajur JSON dalam pelbagai pangkalan data seperti PostgreSQL, MySQL, dan MongoDB untuk meningkatkan prestasi pertanyaan. Ia menerangkan sintaks dan faedah mengindeks laluan JSON tertentu, dan menyenaraikan sistem pangkalan data yang disokong.

Artikel membincangkan mendapatkan MySQL terhadap suntikan SQL dan serangan kekerasan menggunakan pernyataan yang disediakan, pengesahan input, dan dasar kata laluan yang kuat. (159 aksara)
