1. 卸载已有MySQL
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
在安装过程中:
(1)报错1: 安装common、libs时报
:mariadb-libs与所安装软件冲突
原因: 由于centos7默认安装mysql分支数据库mariadb,出现冲突。
【解决方法】:卸载mariadb-libs
[root@localhost java]# rpm -qa |grep -i mariadb
mariadb-libs-5.5.65-1.el7.x86_64
[root@localhost java]#
[root@localhost java]# rpm -ev mariadb-libs-5.5.65-1.el7.x86_64 --nodeps
软件包准备中...
mariadb-libs-1:5.5.65-1.el7.x86_64
[root@localhost java]#
(2)报错2: 安装server时报
:需要安装libnuma.so.1()(64bit)
安装numactl即可:
# yum -y install numactl
(3)报错3: 安装server时报
:需要安装libsasl2.so.2()(64bit)
注: libsasl2.so.2()(64bit) 的包全名为:cyrus-sasl-lib-2.1.23-15.el6_6.2.x86_64.rpm(这里版本请忽略)
yum方式安装cyrus-sasl-lib,发现其已经安装:
[root@localhost java]# yum install -y cyrus-sasl-lib
【解决方法】:强制安装server(--nodeps --force
):
[root@localhost java]# rpm -ivh mysql-community-server-5.7.27-1.el6.x86_64.rpm --nodeps --force
安装完成!
3. 启动MySQL
#查看mysql状态
service mysqld status
# 启动mysql
service mysqld start
# 停止mysql
service mysqld stop
# 重启mysql
service mysqld restart
(1)启动MySQL服务:
[root@localhost java]# service mysqld start
Starting mysqld (via systemctl): [ 确定 ]
[root@localhost java]#
(2)查看MySQL进程(发现启动成功):
[root@localhost java]# ps -ef | grep mysql
root 47240 1 0 22:18 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql 47434 47240 0 22:18 ? 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root 47557 39026 0 22:26 pts/1 00:00:00 grep --color=auto mysql
[root@localhost java]#
4. 修改MySQL密码
(1)关闭MySQL服务:
[root@localhost java]# service mysqld stop
Stopping mysqld (via systemctl): [ 确定 ]
[root@localhost java]#
(2)在配置文件/etc/my.cnf任意行(新一行)中加入指令:skip-grant-tables
[root@localhost java]# vi /etc/my.cnf
注: my.cnf文件目录可通过“find / -name my.cnf”命令查找。
(3)然后启动mysql服务:
[root@localhost java]# service mysqld start
Starting mysqld (via systemctl): [ 确定 ]
[root@localhost java]#
(4)登录MySQL,不需要输入密码直接回车即可
(5)修改密码,并刷新权限
update mysql.user set authentication_string=password('1234') where user='root';
flush privileges;
(6)最后,注释掉配置文件/etc/my.cnf中添加的skip-grant-tables
。
[root@localhost java]# vi /etc/my.cnf
(7)重启mysql服务:
[root@localhost java]# service mysqld restart
Stopping mysqld (via systemctl): [ 确定 ]
[root@localhost java]#
(8)登录后正常操作MySQL会报错
【解决方法】(登录mysql后执行
):
① MySQL版本5.7以下(不含5.7)版本:
SET PASSWORD = PASSWORD('1234');
flush privileges;
② MySQL版本5.7+(含5.7)版本(常用
):
ALTER USER USER() IDENTIFIED BY '1234';
flush privileges;
(9)如果继续报错:
修改MySQL密码安全策略:
mysql> set global validate_password_policy=LOW;
mysql> set global validate_password_length=4;
再次修改密码(这里使用的mysql5.7,版本5.7以下见上面教程):
ALTER USER USER() IDENTIFIED BY '1234';
flush privileges;
5. 修改MySQL字符集等配置(初级配置)
(1)编辑配置信息
[root@localhost java]# vi /etc/my.cnf
内容:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 主服务器唯一ID(一般取IP最后一段)
server-id=1
# 设置mysql的安装目录
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# 允许最大连接数
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
# 设置时区(Idea连接mysql需要设置)
default-time-zone='+08:00'
# 取消mysql表名大小写限制(0:区分,1:不区分)
lower_case_table_names=1
# 必须的配置(支持group by)
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 跳过校验权限(需配置在[mysqld_safe]之前)
# skip-grant-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服务:
[root@localhost java]# service mysqld restart
Restarting mysqld (via systemctl): [ 确定 ]
[root@localhost java]#
(3)查看mysql字符集
mysql> show variables like '%char%';
6. 开启远程访问权限
6.1. 开启远程访问权限(需root用户授权
)
① 执行授权语句,报错:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '1234' WITH GRANT OPTION;
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
修改MySQL密码安全策略:
mysql> set global validate_password_policy=LOW;
mysql> set global validate_password_length=4;
再次执行授权语句:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '1234' WITH GRANT OPTION;
② 刷新权限
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql>
权限变化如下图:
辅助语句(一般不用):
use mysql;
update user set host = ‘%’ where user = ‘root’;
select user,host from mysql.user;
6.2. 开启防火墙端口3306
centos7防火墙相关操作:
启动: systemctl start firewalld
查看状态: systemctl status firewalld
停止: systemctl disable firewalld
禁用: systemctl stop firewalld
(1)开放3306端口
[root@localhost java]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
(2)重新加载防火墙配置
[root@localhost java]# firewall-cmd --reload
success
[root@localhost java]#
(3)查看已开放的端口
[root@localhost java]# firewall-cmd --list-port
3306/tcp
[root@localhost java]#
【附】其他相关命令:
① 关闭指定端口(如:关闭3306端口)
firewall-cmd --zone=public --remove-port=3306/tcp --permanent
② 查看端口状态(如:查看3306端口)
firewall-cmd --zone=public --query-port=3306/tcp
7. 使用Navicat Premium远程连接MySQL(附:常见报错)
注: 这里使用Navicat Premium软件远程连接测试。
到此,安装完成!!!
附:常见连接报错
(1) 报错一(10060): 防火墙端口未开启
(2)报错二(1045): 远程授权密码与实际连接密码不相符