先森来公司试用也有一个半月了,从刚毕业到现在也成长了很多。运维工程师,最基本的当属各种命令,然后是各种服务的搭建部署了。先森这一个半月也不是白混的,也搭建了很多服务了,好久没更新博客了,今天也把先森编译安装MySQL的过程写出来。
MySQL编译安装
编译安装
1、首先要先查看系统是否已经创建过mysql用户。使用下面的命令查看是否有mysql用户及用户组
cat /etc/passwd #查看用户列表 cat /etc/group #查看用户组列表
2、如果没有就创建
groupadd mysql useradd -g mysql mysql
3、解压安装包到/usr/local/目录下,并重命名为mysql。修改/usr/local/mysql权限:
chown -R mysql:mysql /usr/local/mysql
4、修改配置文件
注:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!
在CentOS 6.4版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。
mv /etc/my.cnf /etc/my.cnf.bak
复制mysql服务启动配置文件
cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
5、进入安装路径,执行初始化配置脚本,创建系统自带的数据库和表
cd /usr/local/mysql scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
6、添加到系统服务、启动MySQL
添加服务,拷贝服务脚本到init.d目录,并设置开机启动
cp support-files/mysql.server /etc/init.d/mysql chkconfig mysql on service mysql start --启动MySQL
7、添加环境变量
启动MySQL后,我们还无法直接使用“mysql”命令进入数据库,这时候还需要添加环境变量。
修改/etc/profile文件,在文件末尾添加
PATH=/usr/local/mysql/bin:$PATH export PATH
保存退出后,运行下面的命令,让配置立即生效
source /etc/profile
8、安全
虽然我们这时候已经可以直接进入数据库并未数据库用户设置密码了,但是这样并不安全。MySQL为我们提供了安全配置向导脚本mysql_secure_installation
执行 /usr/local/mysql/bin/mysql_secure_installation
下面是执行后的一些重要交互项,中间内容省略:
Enter current password for root (enter for none):<–初次运行直接回车 ... Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车 New password: <– 设置root用户的密码 Re-enter new password: <– 再输入一次你设置的密码 ... Remove anonymous users? [Y/n] <– 是否删除匿名用户,生产环境建议删除,所以直接回车 ... Disallow root login remotely? [Y/n] <–是否禁止root远程登录,根据自己的需求选择Y/n并回车,建议禁止 ... Remove test database and access to it? [Y/n] <– 是否删除test数据库,直接回车 ... Reload privilege tables now? [Y/n] <– 是否重新加载权限表,直接回车
9、如果我们需要给其他数据库用户设置密码,以root为例,执行下面的命令设置密码:
mysql -uroot mysql> SET PASSWORD = PASSWORD('123456');
10、在安全向导中我们已经关闭了root用户远程访问,若因业务需要我们由需要设置root用户远程访问,那么执行
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; mysql> flush privileges;
简单的解释一下:
*.*是指允许访问任何数据库与数据表;
'root'@'%':root是指定用户,百分号是允许root用户从任何网络远程访问数据库,也可以是“192.168.2.%”这种形式。
后面的123456就是远程访问的密码啦,不知道如果跳过上一步的设置密码过程,直接在这里设置密码,是否也能达到设置密码的效果,先森还没有尝试过。如果知道的朋友可以告诉先森一声。
11、配置防火墙
防火墙的3306端口默认没有开启,若要远程访问,需要开启这个端口
打开/etc/sysconfig/iptables
在“-A INPUT –m state --state NEW –m tcp –p –dport 22 –j ACCEPT”,下添加:
-A INPUT -m state --state NEW -m tcp -p -dport 3306 -j ACCEPT
然后保存,并关闭该文件,在终端内运行下面的命令,重启防火墙以刷新防火墙配置:
service iptables restart
12、创建数据库
CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
总结
因为数据库可以说是服务器中最重要的服务之一了,所以它的安全就显得尤为重要。下面是先森的一些建议:
1、最好不要设置远程访问权限;2、不要开启防火墙端口或使用默认3306端口;
3、尽量不要使用root这种默认用户;
4、保证密码的复杂性;
5、做好数据库备份。
当然做好数据库的安全不仅仅是以上几点。但如果连以上几点都没有做到,那么数据库就非常危险了。
历史上的今天:
转载请注明出处来自https://www.capjsj.cn/centos_mysql.html
确实不错
收藏了备用~
不错哦,持续更新~
赞一下,故意我之后可能也会用到mysql。不过服务器版本不知道回事多少。