Centos 安装Mysql

一 、使用yum 进行安装

1、添加MySQL官方的仓库。这可以通过下载MySQL官方提供的仓库配置包来完成。执行以下命令下载并安装仓库配置包:

复制代码
sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

2、安装MySQL服务器

复制代码
sudo yum install mysql-community-server

3、启动MySQL服务

复制代码
sudo systemctl start mysqld

4、查看MySQL服务的状态

复制代码
sudo systemctl status mysqld

5、安全设置MySQL。运行mysql_secure_installation脚本来设置root用户密码,移除匿名用户,禁止root远程登录等:

复制代码
sudo mysql_secure_installation

6、登录到MySQL数据库确认安装是否成功

复制代码
mysql -u root -p

二、使用安装包进行安装

1、下载mysql安装包(都要)

https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.37-linux-glibc2.12-x86_64.tar.xz

mysql-8.0.37-linux-glibc2.12-x86_64.tar.xz

2、执行安装(都要)

复制代码
## 解压缩文件并移动到指定目录
tar -xvJf mysql-8.0.37-linux-glibc2.12-x86_64.tar.xz 或 tar -zxvf mysql-8.0.37-linux-glibc2.12-x86_64.tar.xz 
## 复制到 /usr/local目录 或是移到指定目录:mv mysql-5.7.10-linux-glibc2.5-x86_64  /home/mysql/mysql-5.7.10
cp -r mysql-8.0.37-linux-glibc2.12-x86_64 /usr/local/ 
cd /usr/local/
mv mysql-8.0.37-linux-glibc2.12-x86_64 mysql
##安装运行mysql所需的包 mysql 5 版本需要
yum search libaio 
yum install libaio
## 安装及配置mysql,参照mysql文件中的INSTALL-BINARY;
groupadd mysql  #添加一个mysql用户组
# useradd -r -g mysql -s /bin/false mysql #设置-s /bin/false表示mysql不能作为登入用户
useradd -g mysql -s /sbin/nologin mysql 
## 未安装在local目录下,需要在/usr/local/目录下创建一个mysql链接
cd /usr/local 
ln -s /home/mysql/mysql-5.7.10 mysql

chown -R mysql.mysql /usr/local/mysql

#作为存放数据的目录
cd mysql 
mkdir data 
chmod 770 data #修改data目录的进入权限

#mkdir /data
#cd /data
mkdir -p /data/{mysqldata,mysqllog,mysqltmp}
chown -R mysql.mysql /data/{mysqldata,mysqllog,mysqltmp}

chown -R mysql:mysql . #修改当前文件夹的用户权限和组权限

# MySQL 5.7.10初始化设置
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
#执行该命令后,注意最后一行的[Note]信息
# [Note] A temporary password is generated for root@localhost: )9AsdF(+86h49 生成的初始密码在首次以root用户登入时使用;
# MySQL 5.7.10安全连接设置
bin/mysql_ssl_rsa_setup --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
chown -R root .
chown -R mysql data
cd /var/log
mkdir mysql  #作为存放数据库运行日志的文件夹
cd /usr/local/mysql/
#此命令在后台运行
bin/mysqld_safe --user=mysql --basedir=/usr/local/mysql--datadir=/usr/local/mysql/data & 
#将mysql加入到可控制启动服务的文件夹内,并命名mysql,即service可控制的服务名,届时可用service mysql start|stop控制启动及关闭mysql
cp support-files/mysql.server /etc/init.d/mysql

3、在/data目录,创建my.cnf文件,写入以下内容:(都要,除server-id以外,其他都先不动,server-id需要每台机器不一样)

复制代码
[mysqld]
datadir=/data/mysqldata/
secure-file-priv=/data/mysqltmp
tmpdir=/data/mysqltmp
log-error=/data/mysqllog/mysqld.log
pid-file=/usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
#read_only = 1
log_timestamps = SYSTEM
slow_query_log=1
long_query_time=5
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
explicit_defaults_for_timestamp
skip-name-resolve
skip-character-set-client-handshake
skip-host-cache
skip-external-locking
skip-slave-start
innodb_buffer_pool_size = 10240M
innodb_sort_buffer_size = 2048M
innodb_read_io_threads = 4
innodb_write_io_threads = 4
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 64M
innodb_log_file_size = 128M
innodb_log_files_in_group = 4
#innodb_lock_wait_timeout = 200
#innodb_flush_method=O_DIRECT
innodb_adaptive_flushing=ON
innodb_max_dirty_pages_pct=80
innodb_io_capacity=1000
lower_case_table_names=1
wait_timeout=28800
interactive_timeout=28800
character-set-server=utf8
collation-server=utf8_general_ci
log-bin-trust-function-creators=1
max_connections=1024
max_allowed_packet=512M
back_log=500
event_scheduler=on
innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:10G  
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server-id=1
gtid_mode=ON
enforce_gtid_consistency=TRUE
log-bin=mysql-bin-A
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
#log-slave-updates
sync_binlog=1
auto_increment_offset=1
auto_increment_increment=1
expire_logs_days=4
binlog_format=row
slave_parallel_type=LOGICAL_CLOCK
slave_parallel_workers=4
master_info_repository = TABLE
relay_log_info_repository = TABLE
#federated
#slave-skip-errors=1061,1062,1305,1032
 
[mysqldump]
quick
max_allowed_packet            = 1G
[mysql]
no-auto-rehash
socket                        = /usr/local/mysql/mysql.sock
 
[myisamchk]
key_buffer_size               = 20M
sort_buffer_size              = 20M
read_buffer                   = 2M
write_buffer                  = 2M
 
[mysqlhotcopy]
interactive-timeout
mkdir -p /data/{mysqldata,mysqllog,mysqltmp}
chown -R mysql.mysql /data/{mysqldata,mysqllog,mysqltmp}

4、初始化mysql,启动mysql(都要)

初始化 如果报错可能是系统和mysql版本不兼容,我这里是centos7最小安装

复制代码
# 初始化 如果报错可能是系统和mysql版本不兼容,我这里是centos7最小安装
/usr/local/mysql/bin/mysqld --defaults-file=/data/my.cnf --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldata
 
 
# 启动
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/my.cnf --pid-file=/usr/local/mysql/mysqld.pid --datadir=/data/mysqldata &

5、查看密码(都要)

复制代码
执行如下命令查看日志,找到图中类似位置,为root密码
more /data/mysqllog/mysqld.log

6、登录mysql(都要)

执行如下命令,并输入密码即可

复制代码
/usr/local/mysql/bin/mysql -uroot -p -S /usr/local/mysql/mysql.sock

7、修改管理员密码(都要)

复制代码
alter user 'root'@'localhost' identified by '你的管理员密码';

三、Centos-8 安装 mysql 8

安装MySQL的话会和MariaDB的文件冲突,所以需要先卸载掉MariaDB。

  1. 安装准备

查看是否安装mariadb

复制代码
   查看是否安装mariadb
   rpm -qa|grep mariadb
   卸载
   rpm -e --nodeps 上一步的文件名
   检查是否卸载完成
   rpm -qa|grep mariadb

查看是否安装libaio

复制代码
查看是否安装libaio
rpm -qa|grep libaio
如果没有安装则执行
yum -y install libaio
有则不需要操作

查看是否安装

复制代码
查看是否安装numactl
    rpm -qa|grep numactl
  如果没有安装则执行
    yum -y install numactl
    有则不需要操作

安装MySQL

这里我安装在/usr/local目录下

复制代码
cd /usr/local/ 
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.30-linux-glibc2.17-x86_64-minimal.tar

这里需要注意的是:这个mysql版本的地址可能后面会失效,那如何获取其他地址进行下载呢? 输入地址:https://www.mysql.com/ 选择DOWNLOADS -> Community (GPL) Downloads -> MySQL Community Server -> Archives

复制代码
下载完成后,拆分tar包
        tar -xvf mysql-8.0.30-linux-glibc2.17-x86_64-minimal.tar
    解压安装包
        tar -xvf mysql-8.0.30-linux-glibc2.17-x86_64-minimal.tar.xz
    将解压后的文件夹重命名为mysql
        mv mysql-8.0.30-linux-glibc2.17-x86_64-minimal/ mysql
    存储数据文件
        cd mysql
    在重命名后的mysql文件夹中创建data文件夹
        mkdir data

设置用户组并赋权

复制代码
  groupadd mysql
    useradd -r -g mysql mysql
    chown -R mysql:mysql /usr/local/mysql/
    chmod -R 755 /usr/local/mysql/

初始化MySQL

复制代码
 cd /usr/local/mysql/bin/
    ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql

    注意:这里会打印一个初始密码,需要记录下来,后面用于登录::y27?RvdRy&(

启动MySQL

复制代码
 /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
    如果提示 ln: failed to create symbolic link '/etc/init.d/mysql': No such file or directory
    sudo mkdir -p /etc/init.d

修改密码

复制代码
 mysql -uroot -p
    这里输入上一步的初始化随机密码
    alter user 'root'@'localhost' identified by '123456';

开启远程连接

复制代码
    use mysql;
    update user set user.Host='%' where user.User='root';
    flush privileges; 
    exit;

 开放端口
  firewall-cmd --zone=public --add-port=3306/tcp --permanent
  firewall-cmd --reload

开启或关闭MySQL命令

复制代码
  service mysql stop
    service mysql start
    service mysql restart

修改sql_mode设置

复制代码
#修改sql_mode设置,避免出现
## Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'db.t_student.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

## 这个错误是由于MySQL的sql_mode设置为only_full_group_by导致的。在这种模式下,当使用GROUP BY子句时,SELECT列表中的列必须是聚合函数或在GROUP BY子句中列出的列。如果SELECT列表中的列不满足这个条件,就会出现这个错误。

vim /etc/my.cnf

## 加入以下内容
 [mysqld]
 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
## 重启MySQL即可

service mysql restart

安装过程中遇到的问题

复制代码
## cannot open shared object file: No such file or directory
## mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
## 安装缺失的包文件
yum install libncurses* -y

开启mysqldump

复制代码
## 查看路径
which mysqldump

## 将mysqldump所在的路径添加到PATH环境变量中
export PATH=$PATH:/usr/local/mysql/bin
## 使修改的PATH环境变量生效
source ~/.bashrc
## 验证mysqldump是否已经添加到系统路径中
mysqldump --version

设置开机自启动

复制代码
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list
相关推荐
toooooop82 小时前
wsl系统无损迁移到ssd硬盘
linux·wsl
ShineSpark2 小时前
Ubuntu下SDL窗口偶发卡住问题深度分析
linux·运维·ubuntu
tobias.b2 小时前
Centos Linux 维护
linux·python·centos
深邃-2 小时前
【Web安全】-Kali,Linux基础:Linux终端介绍,Linux文件操作,Linux文件编辑(2)
linux·计算机网络·安全·web安全·网络安全·系统安全·安全威胁分析
@小博的博客2 小时前
【Linux探索学习】进程的概念及详细解释和一些简单的相关操作
linux·运维·学习
Hugh-Yu-1301232 小时前
WSL --Ubuntu-24.04-LTS子系统安装教程
linux·windows·ubuntu
HalvmånEver2 小时前
MySQL数据库表(table)操作
linux·数据库·学习·mysql
月光下的麦克2 小时前
Ubuntu 与 Windows 之间文件互传
linux·运维·ubuntu
是垚不是土2 小时前
Kafka 故障排查周期长?试试 Kdoctor
linux·运维·分布式·ai·kafka·运维开发