首先查看系统是否安装了:
rpm -qa|grep mariadb
rpm -qa | grep mysql
systemctl status mysqld
find / -name mysql.cnf
卸载自带的 mariadb:
rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps
去官网下载 mysql 安装包:
前往mysql官网下载rpm包,centos选择red hat:mysql下载地址
上传至服务器,解压
# 解压 tar 用 -xvf,解压.tar.gz 用 -zxvf
tar -xvf mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar
依次安装包:
rpm -ivh mysql-community-common-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.44-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.44-1.el7.x86_64.rpm
yum install libaio-devel
rpm -ivh mysql-community-server-5.7.44-1.el7.x86_64.rpm
centos7 安装mysql 错误:libaio.so.1()(64bit) is needed by mysql-community-server-5.7.44-1.el7.x86_64:
需要安装:yum install libaio-devel
初始化数据库:
mysqld --initialize
初始化的时候,会生成随机密码,查看密码:
cat /var/log/mysqld.log | grep 'password'
更改mysql数据库目录的所属用户及其所属组,然后启动mysql数据库:
chown mysql:mysql /var/lib/mysql -R
systemctl start mysqld.service
# 查看数据库运行状态
systemctl status mysqld.service
连接mysql:
mysql -uroot -p
#输入密码
#重置密码
set password=password('root');
#创建用户及权限分配:
create user 'root'@'%' identified by 'root';
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
flush privileges;
exit
设置不区分大小写:
lower_case_table_names = 1
重启服务
systemctl restart mysqld
systemctl status mysqld
卸载是按照安装顺序逆序卸载:
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
yum localinstall mysql57-community-release-el7-8.noarch.rpm
yum repolist enabled | grep "mysql.*-community.*"
# 第一步如果没有执行,会报错,如下面的图片。
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum install mysql-community-server
5. 启动
systemctl start mysqld
# 查看状态
systemctl status mysqld
# 设置开机启动
systemctl enable mysqld
systemctl daemon-reload
grep 'temporary password' /var/log/mysqld.log
如果没有返回,找不到root密码,解决方案:
# 1删除原来安装过的mysql残留的数据(这一步非常重要,问题就出在这)
rm -rf /var/lib/mysql
# 2 重启mysqld服务
systemctl restart mysqld
# 3 再去找临时密码
grep 'temporary password' /var/log/mysqld.log
mysql_secure_installation
运行这个命令,会让你更改密码,删除测试数据库,禁止root远程登录权限。
8. 修改密码策略
首先备份 my.cnf
cp /etc/my.cnf /etc/my.cnf.bak
在/etc/my.cnf文件添加 validate_password_policy 配置,指定密码策略
vi /etc/my.cnf.bak
# 在文件最后添加
validate_password = off
# 重启服务
systemctl restart mysqld
Mysql的root用户,只能本地访问,这里在创建一个远程可以访问的 用户。
GRANT ALL PRIVILEGES ON *.* TO 'ruoyi'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
相关命令:
# 查看所有用户,以root登录mysql
SELECT DISTINCT CONCAT('User: ''', user, '''@''', host, ''';') AS query FROM mysql.user;
## 添加权限
GRANT ALL PRIVILEGES ON *.* TO ‘用户名’@’%’ ;
FLUSH PRIVILEGES;
# 查看用户权限
SHOW GRANTS FOR '用户名'@'%';
# 删除用户
DROP USER '用户名'@'%';
# 撤销权限
REVOKE ALL PRIVILEGES ON *.* FROM ‘用户名’@’%’ ;
FLUSH PRIVILEGES;
mysql> show variables like "%case%";
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 0 | ##0区分 1 不区分
+------------------------+-------+
2 rows in set (0.00 sec)
修改配置文件:/etc/my.cnf
# 0:区分大小写,1:不区分大小写
lower_case_table_names =1
重启服务生效:
systemctl restart mysqld
常见错误:
ERROR 1067 (42000): Invalid default value for 'FAILD_TIME'
(对TIMESTAMP 类型的子段如果不设置缺省值或没有标志not null时候在创建表时会报这个错误)sql_mode
中的NO_ZEROR_DATE
导制的,在strict mode
中不允许’0000-00-00’作为合法日期show variables like 'sql_mode';
将上面的NO_ZERO_DATE
改为下面的ALLOW_INVALID_DATES
修改my.cnf
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
查看 mysql 安装信息:
rpm -ql mysql-community-server
rpm -qc mysql-community-server
rpm -qi mysql-community-server
配置默认字符集:在 my.cnf 添加:
[client]
default-character-set=utf8
[mysql]
# 配置默认字符集
default-character-set=utf8
[mysqld]
# 配置字符集和排序
character-set-server=utf8
collation-server=utf8_general_ci
设置时区:
[mysqld]
default-time_zone='+8:00'
在MySQL 5.7的配置文件my.cnf
中,[client]
、[mysql]
和[mysqld]
是三个不同的配置节,它们分别用于配置客户端连接参数、MySQL客户端(客户端库)参数和MySQL服务器参数。下面是每个节的作用:
[client]
port
指定客户端连接的端口,socket
指定客户端使用的Unix域套接字文件的位置。[mysql]
prompt
定义了MySQL客户端提示符的格式。[mysqld]
port
指定服务器监听的端口,basedir
和datadir
指定了服务器的安装目录和数据目录,log-error
指定了错误日志的文件路径。my.cnf
文件包含这三个节,但是[mysql]
节在某些情况下可能不存在,因为它是可选的。如果[mysql]
节不存在,相关的参数可能会被放在[client]
或[mysqld]
节中,或者直接在命令行中指定。my.cnf
文件时,需要注意:my.cnf
文件对于确保MySQL服务器的安全性、性能和稳定性至关重要。