一、安装:
1、下载
https://dev.mysql.com/downloads/mysql/
Select Version:8.1.0 Innovation
Select Operating System:Red Hat Enterprise Linux/Oracle Linux
Select OS Version:Red Hat Enterprise Liunx 8/Oracle Linux 8(x86,64-bit)
下载:RPM Bundle
2、解压到本地文件夹
复制以下5个文件上传到centos8:
3、 执行安装命令:
rpm -ivh mysql-community-common-8.1.0-1.el8.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.1.0-1.el8.x86_64.rpm
rpm -ivh mysql-community-libs-8.1.0-1.el8.x86_64.rpm
rpm -ivh mysql-community-client-8.1.0-1.el8.x86_64.rpm
rpm -ivh mysql-community-server-8.1.0-1.el8.x86_64.rpm --nodeps --force
问题1:在安装mysql-community-server 报错:
解决的方法:在rpm 语句后面加上--nodeps --force
问题2:在安装mysql-community-libs 报错
error: Failed dependencies:
mariadb-libs is obsoleted by mysql-community-libs
解决办法:卸载之前的mysql-libs
- yum remove -y mysql-libs
##再次安装
- rpm -ivh mysql-community-libs..
mysql --version
建议在启动前修改配置文件,增加配置大小写不敏感等配置。一旦在启动后再增加此配置,将无法启动。
case_table_names=1
max_connections = 2000
max_connect_errors = 1000
只有rm -rf /var/lib/mysql 删除所有数据重新设置。
4、 赋予权限及启动服务:
执行赋予权限:chmod -R 777 /var/lib/mysql
sudo systemctl start mysqld
二、配置mySQL
1、命令初始化
mysqld --initialize --user=mysql --lower_case_table_names=1
2、执行完成后会在该文件中生成mysql的临时密码:
cat /var/log/mysqld.log | grep password
问题1:启动失败,显示地址已在使用,也就是3306端口被占用
查看占用3306的程序:sudo netstat -antup|grep 3306
解决方法:修改端口为3307
sudo nano /etc/my.cnf
在[mysqld]节点后面增加port=3307
配置文件中增加user=root
ctrl+字母o保存,再ctrl+字母x退出。
尝试启动,按提示执行:journalctl -xe
发现提示执行以下两句命令:
ausearch -c 'mysqld' --raw | audit2allow -M my-mysqld
semodule -X 300 -i my-mysqld.pp
根据提示又执行了:semodule -i my-mysqld.pp
最后执行启动mysqld服务命令,终于神奇得好了!
问题2:提示权限不够。
解决方法:修改目录权限
执行:chmod -R 777 /var/lib/mysql
总结:
配置文件/etc/my.cnf全部内容为:
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.1/en/server-configuration-defaults.html
[mysqld]
port=3307
user=root
lower_case_table_names=1#忽略大小写
max_connections = 2000
max_connect_errors = 1000
#
# 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 = 128M
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_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
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.1/en/server-system-variables.html#sysvar_default_a uthentication_plugin
# default-authentication-plugin=mysql_native_password
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
需要执行赋予权限:
chmod -R 777 /var/lib/mysql
//重新挂载服务
sudo systemctl daemon-reload
//启动服务
sudo systemctl start mysqld
//停止
sudo systemctl stop mysqld
//重启
systemctl restart mysqld
//查看服务状态
sudo systemctl status mysqld
//设置开机启动
sudo systemctl enable mysqld
//查看服务是否是自启动
systemctl is-enabled mysqld
三、登录mysql
mysql -u root -p
修改密码:记得语句后得加逗号;
ALTER USER USER() IDENTIFIED BY 'xxxxxx';
flush privileges;
查看用户列表:
设置允许远程连接:
use mysql;
update user set host='%' where user='root';
select host,user from user;
执行完毕需要重启mysql服务。systemctl restart mysqld
四、其他配置
(1)设置最大连接数量,避免超过最大连接数量
sudo nano /etc/my.cnf
添加 max_connections = 2000(数量可自定义) 保存后重启服务:systemctl restart mysqld
(2)忽略大小写
需要备份数据库,清空数据,一切重新开始
rm -rf /var/lib/mysql #清空数据
# 添加配置,大小写不敏感
lower_case_table_names=1
此时重启mysqld服务提示权限不够,按以上问题2的方法解决。
启动服务后,按以上方法,(1)查找临时密码,(2)登录mysql,(3)修改密码,(4)再设置允许远程登录等。
最后重启服务!