安装
卸载默认的 MariaDB
数据库(Centos 一般默认有 MariaDB)
# 查看是否有 MariaDB 相关包
[root@localhost ~]# rpm -qa|grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
[root@localhost ~]#
安装 Oracle MySQL 数据库
- 在 root 目录下,安装
mysql
和mysql-devel
yum install -y mysql yum install -y mysql-devel
- 安装
mysql-server
,安装完成后相关包既安装完成,先不要启动,调整下初始化配置。wget http://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm rpm -ivh mysql80-community-release-el7-5.noarch.rpm yum install -y mysql-community-server
创建配置文件
在 MySQL 数据库中我们可以通过配置 lower_case_table_names=1
来让其忽略大小写。在 MySQL 8
以下版本可以通过修改 /etc/my.cnf
文件后重启服务修改,但在 MySQL 8
版本,只能在初始化的时候设置。
lower_case_table_names
的值:
- 如果设置为 0 (Linux 默认),表名将按指定方式存储,并且在对比表名时区分大小写。
- 如果设置为 1 (Windows 默认),表名将以小写形式存储在磁盘上,在对比表名时不区分大小写。
- 如果设置为 2 (Mac OS 默认,Linux 不支持 2),则表名按给定格式存储,但以小写形式进行比较。
如果使用 InnoDB
表,则应在所有平台上将此变量设置为 1
,以强制将名称转换为小写。
必须在初始化 MySQL
服务器(安装 MySQL
后的首次启动)之前将 lower_case_table_names
配置为所需的值。 在大多数情况下,这需要在首次启动 MySQL
服务器之前在 MySQL
配置文件中设置 lower_case_table_names
创建 /etc/my.cnf
文件
[mysqld]
# 表名将以小写形式存储在磁盘上,在对比表名时不区分大小写
lower_case_table_names=1
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql]
# 默认字符集,这里的字符编码必须和 /usr/share/mysql/charsets/Index.xml 中一致
default-character-set=utf8
服务相关处理
- 设置为开机启动服务
systemctl enable mysqld.service
- 启动/停止/重启/查看服务状态
systemctl start/stop/restart/status mysqld.service
初始化设置/示例
-
修改密码
MySQL 8
初次安装后,需要先通过cat /var/log/mysqld.log | grep password
命令查看密码,修改密码时,需要符合长度 8+,且含有数字、小写或大写字母、特殊字符# 登录 mysql 并输入密码 mysql -u root -p # MySQL 8 修改密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; # 设置 root 用户密码永不过期(按需设置) ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; # 设置 root 账户允许被外部访问(按需设置) UPDATE mysql.`user` SET host="%" WHERE user="root"; # 刷新权限(必须) FLUSH PRIVILEGES; # 查看 `lower_case_table_names` 配置是否生效 show variables like 'lower%';
-
创建新用户和数据库,用户授权
# 创建用户(默认密码需包含 8+ 位大小写字母数字和符号) CREATE USER 'username'@'%' IDENTIFIED BY 'password'; # 创建数据库 CREATE DATABASE IF NOT EXISTS dbname DEFAULT CHARACTER SET utf8mb4; # 如果要允许用户还能授权,则加 WITH GRANT OPTION GRANT ALL PRIVILEGES ON dbname.* to 'username'@'%' WITH GRANT OPTION; # 刷新权限配置 FLUSH PRIVILEGES;
防火墙(如果有开启)
- 查看防火墙状态
systemctl status firewalld
- 查看开放的端口列表
firewall-cmd --zone=public --list-ports
- 开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
- 重新加载防火墙
firewall-cmd --reload
卸载 MySQL
- 查看 MySQL 安装了哪些东西
[root@localhost ~]# rpm -qa | grep mysql mysql-community-client-8.0.30-1.el7.x86_64 mysql-community-server-8.0.30-1.el7.x86_64 mysql-community-icu-data-files-8.0.30-1.el7.x86_64 mysql-community-client-plugins-8.0.30-1.el7.x86_64 mysql80-community-release-el7-5.noarch mysql-community-libs-8.0.30-1.el7.x86_64 mysql-community-common-8.0.30-1.el7.x86_64 mysql-community-devel-8.0.30-1.el7.x86_64
- 卸载已安装的组件
yum -y remove mysql*
- 查看是否卸载完成
[root@localhost ~]# rpm -qa | grep mysql [root@localhost ~]#
- 查找 mysql 相关目录和文件
[root@localhost ~]# find / -name mysql /etc/logrotate.d/mysql /var/lib/mysql /var/lib/mysql/mysql /usr/bin/mysql /usr/lib/python2.7/site-packages/azure/mgmt/rdbms/mysql /usr/lib/python2.7/site-packages/clufter/filters/cluster/rm/mysql /usr/lib64/mysql /usr/include/mysql /usr/include/mysql/mysql [root@localhost ~]#
- 通过
rm -rf
命令删除相关目录和文件,如:rm -rf /usr/lib/mysql
- 删除
/etc/my.cnf
配置文件rm -f /etc/my.cnf
- 删除
/var/log/mysqld.log
(如果不删除这个文件,会导致新安装的 mysql 无法生存新密码,导致无法登陆)rm -rf /var/log/mysqld.log
评论区