一、准备环境
1.1 Centos or Red Hat
1.2 yum
1.3 建议 新建一个mysql 用户,并切换mysql用户,在mysql用户目录下执行安装操作
1.4 默认端口 3306
二、安装Mysql 5.x 步骤
2.1 下载 5.x yum 源,此处我以 mysql5.7为例
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
2.2 安装 mysql yum源
yum localinstall mysql57-community-release-el7-8.noarch.rpm
2.3 检查mysql源是否安装成功
yum repolist enabled | grep "mysql.*-community.*"
出现类似这种说明安装成功!
2.4 如需修改MySQL默认安装版本
vi /etc/yum.repos.d/mysql-community.repo
如需安装5.5版本,将.repo配置文件中的5.7源的enabled=1改为enabled=0,然后再将5.5源的enabled=0改为enabled=1 后eq保存即可。
2.5 安装 MySQL
yum install mysql-community-server
2.6 启动 MySQL
systemctl start mysqld #启动mysql
2.7 MySQL常用命令
systemctl start mysqld #启动mysql systemctl stop mysqld #停止mysql systemctl restart mysqld #重启mysql systemctl status mysqld # mysql启动状态
2.8 修改MySQL ROOT默认密码
mysql安装完成后,通过以下命令找到mysql默认密码:
grep 'temporary password' /var/log/mysqld.log
红框内就是默认root密码。
通过 mysql -uroot -p 命令链接mysql ,密码就是以上默认root密码
登录成功后出现 mysql>
输入以下命令修改密码,admin123!!!...AAA 就是修改后的密码,自行修改,mysql5.7 自带密码强度设置插件,建议设置成大小写字母和数字和符号的混合密码,否则会设置失败,并报错:密码强度太弱。
set password for 'root'@'localhost'=password('admin123!!!...AAA'); #设置密码
flush privileges; #刷新权限
忘记密码时,可用如下方法重置:
1.先关闭mysql服务
2.重置命令 :
mysqld_safe --user=root --skip-grant-tables --skip-networking &3.登录命令:
mysql -u root
4.修改密码;
set password for 'root'@'localhost'=password('admin123!!!...AAA'); #设置密码
flush privileges; #刷新权限
验证:修改成功后台,然后输入 exit 命令断开mysql链接。重新通过 mysql -uroot -p 命令链接mysql ,输入你修改后的密码,出现 mysql> 说明修改成功!
三、MySQL 常见问题,常用配置
mysql使用时会出现几个常见的问题,提前通过以下配置来避免,修改配置文件时需要切换到root用户。
3.1 mysql 最大连接数问题
用java开发的时候,项目出现 1040 too many connection 的错误,就是MySQL最大连接数设置的过小的原因,默认的mysql最大连接数为100,可以设置的最大连接数是:16384。进入MYSQL安装目录 打开MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改为 max_connections=1000 重起MYSQL即可永久生效。
重新通过 mysql -uroot -p 命令链接mysql 输入以下命令验证value是1000就修改成功 :
show variables like 'max_connections'; #(查可以看当前的最大连接数)
3.2 mysql 表名忽略大小写问题
开发中,数据库中有张表为table_one,有些程序员使用 select * from TABLE_ONE ;忽略表名大小写查询,但是又没有设置mysql表名忽略大小写,程序就会一直报错,找不到表。查看大小写区分命令:
mysql> show variables like "%case%";
lower_case_table_names 的Value 为0表示不忽略表名大小写,为1表示忽略表名大小写,linux下mysql默认是 0 。
修改方法:
3.2.1.用ROOT登录,vi /etc/my.cnf3.2.2.在[mysqld]下加入一行:lower_case_table_names=1
3.2.3.重新启动mysql即可生效
通过大小写区分命令查询 lower_case_table_names 为 1 说明修改成功,表示忽略表名大小写!
3.3 mysql 客户端无法远程链接mysql服务
三个常见原因:
3.3.1 mysql服务没开启,开启mysql即可
3.3.2 mysql没有设置远程登录
查看mysql库中的user表
mysql5.7安装默认是只允许本机访问mysql服务的。两种解决方法,根据运维需求自行选择。
1.将你需要远程链接mysql服务器的电脑或者服务器的IP加入user远程访问的白名单。
2.设置用户 root 可以在任意 IP 下被访问,命令:
grant all privileges on *.* to root@"%" identified by "new password";
flush privileges; #刷新权限
3.3.3 防火墙未开放mysql的默认3306端口
请打开防火墙iptables 或者 firewall 开放mysql默认的3306端口
iptables开放3306端口命令 :
vi /etc/sysconfig/iptables #修改iptables配置文件
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #添加主句后eq保存
service iptables restart #重启防火墙使配置生效
firewall开发3306端口命令:
firewall-cmd --permanent --add-port=3306/tcp #开发80端口
firewall-cmd --reload #重启防火墙使配置生效
3.4 设置MySQL默认字符集为 UTF-8 (或 GBK等其他字符集)
修改mysql的配置文件:
vi /etc/my.cnf
在 [mysqld] 前添加如下代码:
[client] default-character-set=utf8
在 [mysqld] 后添加如下代码:
character_set_server=utf8
然后登录 mysql> 输入以下命令查询
show variables like '%character%';
像如上,出现6个 utf8 就算 设置成功
四、MySQL 常见文件默认路径
4.1 主配置文件 /etc/my.cnf
4.2 主日志文件 /var/log/mysqld.log
4.3 socket 文件 /var/run/mysqld/msyqld.pid
4.4 服务启动脚本 /usr/lib/systemd/system/mysqld.service
4.5 数据库文件存放目录 /var/lib/mysql/.
五、数据库加固
https://blog.csdn.net/GGGoodLuck/article/details/79238006