Linux安装Mysql5.7.24
一、卸载
mysql安装有三种方式,包括二进制包安装(Using Generic Binaries)、RPM包安装、源码安装。一般是前两种比较多
卸载方法参考Linux->卸载Mysql方法总结,记得卸载干净再安装!
二、安装
1.Mysql下载地址https://dev.mysql.com/downloads/mysql/

2.把Mysql压缩包放到目录/usr/local
3.进入压缩包存放路径
[root@localhost ~]# cd /usr/local
4.解压
[root@localhost local]# tar -xzvf mysql-5.7.24-linux-glibc2.12-x86_64.tar
5.改文件夹名
[root@localhost local]mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql
6.检查并创建用户和用户组
[root@localhost local]# cat /etc/group | grep mysql [root@localhost local]# cat /etc/passwd |grep mysql [root@localhost local]# groupadd mysql [root@localhost local]# useradd -r -g mysql mysql
7.授权目录和用户
[root@localhost /]# cd /usr/local/ [root@localhost local]# chown -R mysql:mysql mysql/ [root@localhost local]# chmod -R 755 mysql/
8.安装并初始化
8.1.去/etc/目录下查看是否有my.cnf配置文件,如果有,删除或者修改名字备份起来!不然会出现各种PID或者SOCK有关的问题。
8.2.初始化
注意:在local目录下
[root@localhost local]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
执行完上面之后,最后一行会有默认生成的密码,记下来

8.2.1.如果报错信息如下:
error while loading shared libraries: libnuma.so.1: cannot open shared object file.....
解决方法:
yum 安装的libnuma.so.1,但安装时默认安装的是32的,但db2需要的是64位的,先卸载32位的,再安装64的,执行下面即可
yum remove libnuma.so.1
yum -y install numactl.x86_64
8.3复制启动脚本到资源目录
[root@localhost local]# cd mysql [root@localhost mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld 提示是否覆盖的话,可能之前装过没删除,输入y覆盖
8.4增加mysqld服务控制脚本执行权限
[root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysqld
8.5.将mysqld服务加入到系统服务
[root@localhost mysql]# chkconfig --add mysqld
8.6.检查mysqld服务是否已经生效
[root@localhost mysql]# chkconfig --list mysqld

8.7.启动mysql
[root@localhost mysql]# service mysqld start
若显示SUCCESS,就已经启动成功!
8.7.1.启动失败mysql错误1
若提示找不到mysql命令的话执行↓
[root@localhost mysql]# ln -s /usr/local/mysql/bin/mysql /usr/bin
8.7.2.启动mysql2错误2
提示找不到pid文件的话,需要回去看第8步,查看是否有my.cnf文件(以前存留下来的),如果存在备份修改名字即可
[root@localhost etc]# mv my.cnf my-bk.cnf
8.8.登录Mysql
[root@localhost mysql]# mysql -uroot -p
注意:密码是第8步初始化随机生成的密码!
8.8.1.若登录失败1
失败信息:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
[root@localhost mysql]# ln -s /var/lib/mysqld/mysql.sock /tmp/mysql.sock
8.8.2.若登录失败2
增加软连接
ln -s /usr/local/mysql/bin/mysql /usr/bin
8.9.修改本地登录密码为:123456
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
9.0 .设置远程登录密码为:123456
mysql> flush privileges; mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; mysql> flush privileges; mysql> exit
9.1.配置3306端口(云服务器就在实例配置安全组)
本地虚拟机配置方法:打开/etc/sysconfig/iptables文件,找到22端口(这个是默认配置好的),复制多一行在下面,把22改成3306就行,记住,不要复制到最后一行,有些竟然没有iptables的文件?这是可以生成的,百度一下就行,有些防火墙文件不是这个,要先取消或者设置
把下面复制到iptables里
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

修改完保存之后执行命令行重启防火墙
service iptables restart
有些Linux版本的重启如下
systemctl restart iptables.service
9.2.测试连接
本地使用Navicat连接测试,填写完点击连接测试

9.2.1.若显示错误信息不允许连接1130 - Host '192.168.114.1' is not allowed to connect to this MySQL server

解决方法:(如果还没登录mysql,记得登录先)
mysql> flush privileges; mysql> GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; mysql> flush privileges;
执行完再次连接测试
9.2.2.报错1045 - Access denied for user 'root'@'192.168.114.1' (using password:YES),

不过这次结果是密码错误,原因是因为未授权,第一次启动是这样的,解决如下:
mysql> grant all privileges on *.* to 'root'@'%' identified by 'root'; mysql> flush privileges;
9.3关闭mysql
如果还是mysql命令行模式的,先exit退出,再执行下面!
[root@localhost mysql]# service mysqld stop
9.4.新建配置文件my.cnf
复制my.cnf配置文件到/etc/目录下,没有这个文件的,自己新建,内容如下
# For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html [mysqld] # #skip-grant-tables # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. innodb_buffer_pool_size = 4G # # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M datadir=/usr/local/mysql/data socket=/var/lib/mysqld/mysql.sock character-set-server=utf8mb4 # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid server-id=1 log-bin=mysql-bin log-slave-updates=1 default-storage-engine=INNODB innodb_large_prefix=on
skip-name-resolve max_connections = 2000 max_connect_errors=2000 #skip-grant-tables
9.5.授权配置文件
注意权限不要设置成777,777是最大的权限,权限过大mysql会认为不安全,会自动忽略这个文件,相当于没有起作用!
[root@localhost mysql]# chmod 644 /etc/my.cnf
9.6.新建路径
在步骤9.5里面配置了日志文件、pid文件、sock文件的路径,所以要去自己手动创建这些路径的文件夹,里面的文件不用创建,会自动生成!
PID路径:/var/run/mysqld/
LOG路径:/var/log/
SOCK路径:/var/lib/mysqld/
9.7.给新建的路径授权
对这些路径授权,忘记的话,em.....各种各样的问题(如果遇到sock,pid,log的报错,基本就是这步授权的问题.....)
[root@localhost var]# chown -R mysql /var/lib/mysqld [root@localhost var]# chgrp -R mysql /var/lib/mysqld [root@localhost var]# chown -R mysql /var/run/mysqld [root@localhost var]# chgrp -R mysql /var/run/mysqld [root@localhost var]# chown -R mysql /var/log [root@localhost var]# chgrp -R mysql /var/log
9.8.启动mysql
[root@localhost var]# service mysqld start
9.9.查看进程配置生效
[root@localhost var]# ps -ef | grep mysql

10.如果MySQL is running but PID file could not be found(解决方法)
第一步:找到 mysql 中 data 目录下的 mysql-bin.index 文件,然后删除
find / -name mysql-bin.index
rm -rf /phpstudy/data/mysql-bin.index
第二步:找到 并 kill 所有关于 mysql 或者 mysqld 的进程
ps -aux | grep mysql
kill mysql的进程号

浙公网安备 33010602011771号