1.1. 查看是否已安装mysql
rpm -qa |grep -i mysql
如果系统已安装,请卸载删除。
1.2. 删除MySQL
删除命令:rpm -e --nodeps 包名
rpm -ev mysql-libs-5.1.73-8.el6_8.x86_64
如果提示依赖包错误,则使用以下命令尝试(个人建议):
rpm -ev mysql-libs-5.1.73-8.el6_8.x86_64 --nodeps
如果提示错误:error: %preun(xxxxxx) scriptlet failed, exit status 1
则用以下命令尝试:
rpm -e --noscripts mysql-libs-5.1.73-8.el6_8.x86_64
1.3. 删除残留mysql的文件和库
查找删除残留mysql的文件和库:
find / -name mysql
删除对应的mysql目录:
rm -rf /usr/share/mysql
rm –rf /usr/lib64/mysql
rm -rf /var/lock/subsys/mysql
1.4. 手工删除/etc/my.cnf
rm -rf /etc/my.cnf
1.5. 再次检查是否已安装mysql,如果有,请重复上面步骤删除之。
find / -name mysql
rpm -qa|grep -i mysql
2. 安装MySQL5.7
上传以下mysql安装文件:
mysql-community-client-5.7.27-1.el6.x86_64.rpm
mysql-community-server-5.7.27-1.el6.x86_64.rpm
mysql-community-common-5.7.27-1.el6.x86_64.rpm
mysql-community-libs-5.7.27-1.el6.x86_64.rpm
由于存在各种依赖关系,安装顺序为:
1)rpm -ivh mysql-community-common-5.7.27-1.el6.x86_64.rpm
2)rpm -ivh mysql-community-libs-5.7.27-1.el6.x86_64.rpm
3)rpm -ivh mysql-community-client-5.7.27-1.el6.x86_64.rpm
4)rpm -ivh mysql-community-server-5.7.27-1.el6.x86_64.rpm
仍然报错,需安装perl(未报错,请忽略此步骤):
如图,安装完成!
3. 启动MySQL
#查看mysql状态
service mysqld status
# 启动mysql
service mysqld start
# 停止mysql
service mysqld stop
# 重启mysql
service mysqld restart
3.1. 启动报错
3.1.1. 第一种启动报错
[root@localhost user]# service mysqld start
增大日志文件mysqld.log的rwx权限:
chmod 777 /var/log/mysqld.log
【解决】依次执行以下命令即可:
rm -fr /var/lib/mysql/*
rm /var/lock/subsys/mysqld
killall mysqld
重启mysql服务:
service mysqld restart
3.1.2. 第二种启动报错
[root@localhost user]# service mysqld start
注:第一次启动过程会初始化一些东西。
再次启动mysql:
[root@localhost user]# service mysqld start
4. 修改MySQL密码
(1)关闭MySQL服务:
service mysqld stop
(2)在配置文件/etc/my.cnf任意行(新一行)中加入指令:skip-grant-tables
vi /etc/my.cnf
注:my.cnf文件目录可通过“find / -name my.cnf”命令查找。
(3)然后启动服务:
service mysqld start
(4)登录MySQL,不需要输入密码直接回车即可
(5)修改密码
update mysql.user set authentication_string=password('1234') where user='root';
flush privileges;
(6)最后,注释掉配置文件/etc/my.cnf中添加的skip-grant-tables
。
vi /etc/my.cnf
(7)重启mysql服务:
service mysqld restart
(8)登录后正常操作MySQL会报错
解决方式如下(登录mysql后执行):
8.1)MySQL版本5.7以下(不含5.7)版本:
SET PASSWORD = PASSWORD('1234');
flush privileges;
8.2)MySQL版本5.7+(含5.7)版本:
ALTER USER USER() IDENTIFIED BY '1234';
flush privileges;
(9)如果继续报错:
修改MySQL密码安全策略:
mysql> set global validate_password_policy=LOW;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_length=4;
Query OK, 0 rows affected (0.00 sec)
修改密码:
mysql> ALTER USER USER() IDENTIFIED BY '1234';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
5. 修改MySQL字符集等配置(初级配置)
(1)编辑配置信息
vi /etc/my.cnf
注: 以下红色字体建议都配置。
附文本:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 主服务器唯一ID(一般取IP最后一段)
server-id=1
# 设置mysql的安装目录
basedir=/usr/local/mysql57
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql57/data
# 允许最大连接数
max_connections=1000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 分组group_cocat函数最大长度,默认为1024
group_concat_max_len=102400
# 最大数据包大小(通信缓冲区的最大长度)
max_allowed_packet=102400
# 最大允许的数据包大小(执行大数据插入等操作需要配置)
max_allowed_packet=10000M
# 取消mysql表名大小写限制(0:区分,1:不区分)
lower_case_table_names=1
# 设置时区(Idea连接mysql需要设置)
default-time-zone='+08:00'
# 必须的配置(支持group by)
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
针对如上设置的pid-file文件夹路径:建议自行创建,并授权:
# mkdir -p /var/run/mysqld
# chown mysql.mysql /var/run/mysqld/
(2)保存后,重启mysql服务:
service mysqld restart
(3)查看mysql字符集
show variables like ‘%char%’;
6.1. 开启远程访问权限
授权语句(需root用户登录mysql后授权):
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '1234' WITH GRANT OPTION;
FLUSH PRIVILEGES;
权限变化如下图:
辅助语句(一般不用):
use mysql;
update user set host = ‘%’ where user = ‘root’;
select user,host from mysql.user;
6.2. 开启防火墙端口3306
(1)修改防火墙配置,添加如下代码,其中 3306 是要开放的端口号,然后重新启动linux的防火墙服务:
vi /etc/sysconfig/iptables
要添加的代码:-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
附全文 :
==========================================================================
1 # Firewall configuration written by system-config-firewall
2 # Manual customization of this file is not recommended.
3 *filter
4 :INPUT ACCEPT [0:0]
5 :FORWARD ACCEPT [0:0]
6 :OUTPUT ACCEPT [0:0]
7 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
8 -A INPUT -p icmp -j ACCEPT
9 -A INPUT -i lo -j ACCEPT
10 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
11 -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
12 -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
14 -A INPUT -j REJECT --reject-with icmp-host-prohibited
15 -A FORWARD -j REJECT --reject-with icmp-host-prohibited
16 COMMIT
==========================================================================
(2)重启防火墙服务:
service iptables restart
7. 附:主机远程连接MySQL常见报错
注: 这里使用Navicat Premium软件远程连接测试。
7.1. 报错一(10060):防火墙端口未开启
7.2. 报错二(1045):远程授权密码与实际连接密码不相符
到此,安装完成!!!