操作系统:Centos7.6
MySQL版本: 8.0.30
本文使用的是当前最新8.0.30版本,如果需要安装的版本比8.0.30高或者低,只要是8.0.*版本,那就可以按照本文说明安装,基本不会有任何问题。
安装MySQL的话会和MariaDB的文件冲突,所以需要先卸载掉MariaDB。
rpm -qa|grep mariadb
rpm -e --nodeps 文件名
rpm -qa|grep mariadb
rpm -qa|grep libaio
如果没有安装则执行
yum -y install libaio //安装libaio
rpm -qa|grep numactl
如果没有安装则执行
yum -y install numactl //安装numactl
可以在官网下载安装包或者在服务器直接使用wget下载。
MySQL官网下载地址:https://dev.mysql.com/downloads/mysql/
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.30-el7-x86_64.tar
注:本文安装包上传到了 /usr/local/ 目录下
进入安装包目录
cd /usr/local/
拆分tar包
tar -xvf mysql-8.0.30-el7-x86_64.tar
解压安装包
tar -zxvf mysql-8.0.30-el7-x86_64.tar.gz
将解压后的文件夹重命名为mysql
mv mysql-8.0.30-el7-x86_64/ mysql
在重命名后的mysql文件夹中创建data文件夹
mkdir mysql/data
创建用户组
groupadd mysql
创建用户
-r:创建系统用户
-g:指定用户组
useradd -r -g mysql mysql
更改属主和数组
chown -R mysql:mysql /usr/local/mysql/
更改权限
chmod -R 755 /usr/local/mysql/
进入MySQL的bin目录
cd /usr/local/mysql/bin/
初始化
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql --lower-case-table-names=1
初始化完成后会打印一个随机密码,后面会用到。
vi /etc/my.cnf
配置文件修改为以下内容,也可以根据自己需要设置参数。
[client] port = 3306 socket = /usr/local/mysql/data/mysql.sock default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect = ‘SET NAMES utf8mb4’
port = 3306
socket = /usr/local/mysql/data/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
datadir = /usr/local/mysql/data
#lower_case_table_names=1
#如果要设置lower_case_table_names可以在初始化里面设置 ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql --lower_case_table_names=1
max_connect_errors=10000
max_connections = 10000
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
配置后修改 /etc/my.cnf 的权限为777
chmod 777 /etc/my.cnf
/usr/local/mysql/support-files/mysql.server start
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
ln -s /usr/local/mysql/mysql.sock /var/mysql.sock
service mysql restart
[root@localhost bin]# mysql -uroot -p
Enter password: 输入初始化随机密码
修改密码
alter user 'root'@'localhost' identified by '你的密码' password expire never; alter user 'root'@'localhost' identified with mysql_native_password by '你的密码' flush privileges;mysql>use mysql;
msyql>update user set user.Host='%' where user.User='root';
mysql>flush privileges; //刷新权限
如果服务器本地可以连接,但是连接工具远程连接不进去,则需要检查一下防火墙是否放行3306端口,也可以暂时先关闭防火墙后重试。
关闭防火墙
systemctl stop firewalld
CentOS6和CentOS7命令都可以使用。
启动
service mysql start
systemctl start mysql
停止
service mysql stop
systemctl stop mysql
重启
service mysql restart
systemctl restart mysql
查看状态
service mysql status
systemctl status mysql
将服务文件拷贝到 /etc/init.d下,并重命名为mysqld
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
赋予可执行权限
chmod +x /etc/init.d/mysqld
添加服务
chkconfig --add mysqld
显示服务列表
chkconfig --list
注:如果看到mysqld的服务,并且3,4,5都是on的话则成功,如果是off,则执行
chkconfig --level 345 mysqld on
重启系统
reboot
重启后查看mysql是否开机自启动
ps -ef|grep mysql