CentOS7安装MySQL8.0.42
1、下载MySQL8.0.42
方式一:
通过网盘分享的文件:mysql-8.0.42-1.el7.x86_64.rpm-bundle.tar
链接: https://pan.baidu.com/s/1wRRWxQxU55X8vFOU_0Y5pQ?pwd=1234 提取码: 1234
方式二:
https://dev.mysql.com/downloads/mysql/MySQL官网下载:
https://dev.mysql.com/downloads/mysql/
2、将下载好的mysql8通过MobaXterm或者其他工具,拖入到/usr/local/目录下
进入安装包目录
cd /usr/local
3、拆分tar包
tar -xvf mysql-8.0.42-1.el7.x86_64.rpm-bundle.tar
4、解压安装包
tar -xvf mysql-8.0.42-1.el7.x86_64.rpm-bundle.tar
5、分别安装 common、libs、client、server 4个模块
rpm -ivh mysql-community-common-8.0.42-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-libs-8.0.42-1.el7.x86_64.rpm --nodeps --forcerpm -ivh mysql-community-client-8.0.42-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-server-8.0.42-1.el7.x86_64.rpm --nodeps --force
6、修改my.cnf配置
cd /etc
vi my.cnf
复制以下内容,
再输入:wq! 保存退出即可
[client]
port=3306
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8mb4[mysql]
default-character-set=utf8mb4
no-auto-rehash[mysqld]
port=3306datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pidcharacter-set-client-handshake=FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'lower_case_table_names=1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIONskip-external-locking
skip_name_resolve
max_connect_errors=10slow_query_log=on
long_query_time=3
slow_query_log_file=/var/log/slowsql.logkey_buffer_size=128M
read_buffer_size=1M
read_rnd_buffer_size=2M
max_allowed_packet=1M
table_open_cache=64
sort_buffer_size=512K
net_buffer_length=8Kdefault_storage_engine=InnoDB
innodb_buffer_pool_size=1024M
innodb_flush_log_at_trx_commit=2
innodb_log_file_size=256M
innodb_log_buffer_size=8M
innodb_log_files_in_group=3
innodb_lock_wait_timeout=50
7、在 /var/log 下新建一个 slowsql.log 文件,是用来记录慢SQL的日志,方便以后查看哪个SQL比较慢进行优化
cd log/
touch slowsql.log
赋权限:
chown mysql:mysql slowsql.log
-
chown
:change owner(更改文件所有者) -
mysql:mysql
:第一个mysql
是用户,第二个mysql
是用户组 -
这个命令将文件
slowsql.log
的所有者设置为mysql
用户,所属组设置为mysql
组
chmod 664 slowsql.log
-
chmod
:change mode(更改文件权限) -
664
:权限的数字表示-
第一个
6
(所有者权限):读(4) + 写(2) = 6 -
第二个
6
(组权限):读(4) + 写(2) = 6 -
第三个
4
(其他用户权限):只读(4)
-
8、 初始化前还要改一下配置里出现的一些文件夹归属和权限,否则可能因为没有权限报错
chown -R mysql:mysql /var/lib/mysql
9、上面命令表示将目录 /var/lib/mysql 以及里面所有文件归属赋给mysql组的mysql用户,mysql组和mysql用户应该是安装的时候自动创建了的,可以在安装完后通过以下命令查看一下
cat /etc/passwd
10、修改权限
chmod -R 755 /var/lib/mysql
(755代表所有者全权限,组用户/其他用户可读可执行不能编辑)
11、然后执行初始化命令(指定mysql用户)
sudo mysqld --user=mysql --initialize
*重要:初始化完成之后,会自动生成一个随机密码在mysql日志文件里,
即my.cnf配置的log-error配置
12、命令查看随机密码
cat /var/log/mysqld.log | grep password
13、启动MySQL,修改登录密码
启动命令:systemctl start mysqld
查看启动状态:systemctl status mysqld
14、 登录MySQL,修改登录密码
输入:mysql -uroot -p 回车,然后复制前面查到的随机密码粘贴过来,
不显示明文的,粘贴之后会显示粘贴了多少个字符(有的不显示),回车出现mysql>即登录成功
修改登录密码:alter user 'root'@'localhost' identified by '123456';
\c
exit
mysql -uroot -p
15、创建非root远程登录用户,开启远程登录
创建远程登录用户以及设置密码:create user 'admin'@'%' identified by '123456';
(* 注意:建议这里设置的密码复杂些,我这里只是作为教程设置得简单,数字+大小写字母+特殊字符都用上最好)
赋予权限(*.*代表可访问操作所有数据库和表):
grant all privileges on *.* to 'admin'@'%' with grant option;
刷新生效:flush privileges;
退出:exit;
16、firewall防火墙开放端口
查看防火墙状态:systemctl status firewalld
执行命令开启:systemctl start firewalld
永久开启3306端口命令:firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启生效:firewall-cmd --reload
查看有没有加上:firewall-cmd --list-ports
17、用 Navicat 或其他管理工具进行连接:
一开始报错连不上
解决
(1)先登录mysql -u root -p
(2)检查现有 root 用户权限
SELECT Host, User FROM mysql.user WHERE User = 'root';
如果 Host
列没有 %
(表示允许所有 IP)或你的客户端 IP(如 192.168.137.1
),则需要授权。
(3)授权 root 用户远程访问
先创建用户(如果不存在)并设置密码
CREATE USER 'root'@'192.168.137.1' IDENTIFIED BY '123456';
授予权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.137.1' WITH GRANT OPTION;
刷新权限
FLUSH PRIVILEGES;