最近在部署系统环境,主要安装 mysql、tomcat、jdk、redis、nginx。踩了很多坑,现在形成文档,避免以后浪费时间,这篇是 mysql 的安装。
为什么要强调版本呢,因为不同的版本,碰到的情况不一样,从5.7.18开始,mysql 虽然也会生成 my.cnf 配置文件,但是和以前的 default.cnf 不一样,不仅位置还有内容。
本来准备将资源上传到 CSDN 的,但是文件太大,限制了。所以自行安装包自行解决吧。我使用的是 .tar.gz 式安装包。
2.1.1 卸载自带的 Mysql 。一般没有,但是检查下最好
rpm -qa | grep mysql
如果搜到了,假设搜到的叫做 mysql-xxx-xx,然后卸载它(替换自己的名字)。如果没有搜到,不用管了。
rpm -e --nodeps mysql-xxx-xx
2.1.2 解压到 local 下。 因为是以 .gz 结尾。不用新建 mysql 文件夹,直接解压
tar -xvf mysql-5.7.20-linux-glibc2.5-i686.tar.gz -C /usr/local
注意替换自己安装包名字
2.1.3 修改mysql文件夹名字
mv mysql-xxx mysql
2.1.4 创建用户组mysql,创建用户mysql并将其添加到用户组mysql中,并赋予读写权限
groupadd mysql
useradd -r -g mysql mysql
chown -R mysql mysql/
chgrp -R mysql mysql/
2.1.5 配置文件 my.cnf ,这是重点。可以去 etc 下找找是否存在 my.cnf 如果不存在自己新建一个,如果存在里面应该会有一些内容,但是配置内容并不是我们熟悉或者希望的,所以将以前的内容注释,然后添加我们自己的
vim /etc/my.cnf
如果本身存在,打开就会有内容,如果不存在,执行如上命令就会生成一个文件。如果存在内容,将内容删除,然后添加如下内容,如果不存在,直接添加。然后保存退出。
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
symbolic-links=0
character_set_server=utf8
init_connect='SET NAMES utf8'
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
#不区分大小写
lower_case_table_names = 1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_connections=5000
default-time_zone = '+8:00'
注意前面的注释,其实就是把以前如果存在的内容注释,将自己的配置内容添加,看好注释内容
2.1.6 初始化数据库
这一步坑比较多
yum install libaio
cd /var/log/
vim mysqld.log
chmod 777 mysqld.log
chown mysql:mysql mysqld.log
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US
这一步可能会报错如下
error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
这是因为前面
yum 安装的libnuma.so.1,但安装时默认安装的是32的,但db2需要的是64位的
所以我们需要先卸载libnuma.so.1
再安装
yum remove libnuma.so.1
yum -y install numactl.x86_64
这里安装完成后,在运行如上语句
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US
2.1.7 建立 my.cnf 配置文件中配置的 mysqld.pid 文件
cd /var/run/
mkdir mysqld
chmod 777 mysqld
cd mysqld
vim mysqld.pid
chmod 777 mysqld.pid
chown mysql:mysql mysqld.pid
2.1.8 查看密码 运行服务端 mysql service 登录mysql
查看密码
cat /var/log/mysqld.log
启动服务端
/usr/local/mysql/support-files/mysql.server start
登录
/usr/local/mysql/bin/mysql -uroot -p
输入密码
如果出现 -bash: mysql: command not found
错误,一般是由于安装了一键安装脚本后没有对命令做链接,使用
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
然后就可以使用mysql命令了。
2.1.9 修改初始密码
set password=password('新密码');
flush privileges;
特别注意上述命令是进入 mysql 后才能执行
2.2.0 将 mysql 服务添加到开机自启
cd /usr/local/mysql/support-files
cp mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
2.2.1 使用service mysqld命令启动/停止服务
service mysqld start/stop/restart
2.2.2 为了避免每次都输入mysql的全路径/usr/local/mysql/bin/mysql,可将其加入环境变量中,在/etc/profile最后加入两行命令
vim /etc/profile
export PATH=/usr/local/mysql/bin:$PATH
source /etc/profile
这样就可以在shell中直接输入mysql命令来启动客户端程序了
mysql -uroot -p
2.2.3 设定远程登录mysql
在Linux下为了安全,默认是不允许mysql本机以外的机器访问mysql数据库服务,因此需要重新授权root。方便远程访问。
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select Host,User from user;
+———–+———–+
| Host | User |
+———–+———–+
| % | root |
| localhost | mysql.sys |
| localhost | root |
+———–+———–+
3 rows in set (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON . TO root@’%’ identified by ‘000000’;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
授权语句最后的‘000000’是mysql数据库root用户的新密码。
ok,到这里差不多完成了,最后设置好 Mysql 的安全组,就可以在远程使用工具访问该数据库了