centos7 安装mysql
1 准备
#1 检查是否安装过mysql 和mariadb
rpm -qa|grep mysql
rpm -qa|grep -i mariadb
# 如果有,直接卸载
rpm -e --nodeps +包名字
# 删除mysql配置文件
rm -rf /etc/my.cnf
#自动补齐
yum install bash-completion
#2 安装相关依赖
yum search libaio
yum install libaio -y
#3 创建mysql账号
useradd -r -s /sbin/nologin mysql
#4 下载mysql安装包,两种方式
ps:下载之前,看一下安装环境glibc版本:ldd --version
确保安装环境glibc的版本要大于等于下载的包的glibc版本。
1 从官网下载,然后上传到/usr/local文件夹下
https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
2 使用wget命令下载(比较慢),下载到/usr/local文件夹下
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
2 安装
#5 解压文件
tar -xf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz
#6 把解压后的文件移动到/usr/local/mysql文件夹下
mv mysql-5.7.33-linux-glibc2.12-x86_64 /usr/local/mysql
将mysql所属组改为mysql用户
chown -R mysql mysql
#7 进入mysql文件夹下,创建mysql-files,更改权限
cd /mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files
#8 初始化数据库,指令执行完毕后,记录临时密码
mysql8.0初始化之后就不可以修改lower_case_table_names这个参数了,如果想修改需要再初始化的时候提前配置好my.cnf
并且在初始化的时候,加上这个参数。
mysql5.7 可以直接执行8.2.
8.1 编辑/etc/my.cnf 配置文件:
vim /etc/my.cnf
[mysqld]
####基础配置####
# 表示mysql实例,一般在 集群中用到
server-id = 1
# MySQL服务程序TCP/IP监听端口(通常用3306)
port = 12300
# 表示MySQL的管理用户
user = mysql
#指定服务器 默认 字符集
character_set_server=utf8mb4
#默认排序规则
collation_server = utf8mb4_0900_ai_ci
# 指定服务器 默认 引擎
default_storage_engine=INNODB
# 安装目录
basedir = /usr/local/mysql
# 数据目录
datadir = /usr/local/mysql/data
# 数据库不区分大小写。
lower_case_table_names=1
# 禁用DNS主机名查找,启用以后请求响应快了一半
skip_name_resolve = 1
# 数据库隔离级别,默认是可重复读
transaction_isolation=READ-COMMITTED
# 设置时区
default_time_zone = "+8:00"
# 打印死锁
innodb_print_all_deadlocks = 1
# group by等规则
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
# 语句超时时间,默认是28800,48分钟
wait_timeout = 600
保存之后执行命令:
chmod a-w /etc/my.cnf
8.2
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql
或者
bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --initialize --lower_case_table_names=1
初始化后的密码记录好,后面会用上。
密码样式:fhQ=WWBgg434
#9 设置安全加密链接ssl,数据传输会采用加密的方式
bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql
#10 拷贝文件,目的是可以使用service相关指令
cp support-files/mysql.server /etc/init.d/mysql
vim /etc/init.d/mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
#11 配置环境变量
echo 'export PATH=$PATH:/usr/local/mysql/bin' >>/etc/profile
source /etc/profile
#12 启动mysql
service mysql start
3 后续操作
#14 登录mysql、修改密码(首次登录使用下面的指令)
cd /usr/local/mysql
bin/mysqladmin -uroot password '新密码' -p
Enter password:输入刚刚初始化产生的临时密码
#用设置好的密码登录一下:
bin/mysql -uroot -p
Enter password:输入刚刚设置的新密码
#15 修改密码
# 需登录,指令要带分号(;),在mysql中运行指令如果不加分号,会被认为指令没有结束
set password for root@localhost = password('123456');
flush privileges;
#使用sql语句更新 mysql 库中的 user 表(需登录)
use mysql;
update mysql.user set password=password('123') where user='root' and host='localhost';
flush privileges;
#mysqladmin命令,不需登录,明文
mysqladmin -uroot -p123 password 123456
#mysqladmin命令,不需登录,输入两次新密码,暗文
mysqladmin -uroot -p123 password
#16 安全配置,一路Y即可
mysql_secure_installation
#17 开放远程连接:登录mysql之后执行
第一种方式
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> flush privileges;
第二种方式:
mysql> update mysql.user set host = '%' where user = 'root';
mysql> FLUSH PRIVILEGES;
#18 防火墙中方行3306,如果mysql安装在云服务器上,需要在安全组中方行3306
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --reload
#19 开机自启
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
chkconfig --list
chkconfig --level 2345 mysql on
reboot
#20 修改端口号
#去掉只读
chmod a+w /etc/my.cnf
vim /etc/my.cnf
##在mysqld下增加一行:
port=10086
#重新添加只读
chmod a-w /etc/my.cnf
service mysql restart
# 修改完端口号之后,需要在云服务器安全组和防火墙放行新端口号
#移出防火墙中原端口:
firewall-cmd --permanent --remove-port=3306/tcp
#添加新端口:
firewall-cmd --permanent --zone=public --add-port=14509/tcp
#重启防火墙
systemctl reload firewalld
#21 mysql 配置,修改/etc/my.cnf即可。
#系统中存在多个my.cnf文件,mysql会根据其自身规则,按照优先级顺序选择加载哪一个。/etc/my.cnf正常情况下,确实是最优先加载的,
#然而高版本的mysql添加了设定:如果这个文件全局可写,那么它就不会加载etc下的这个my.cnf,而是按照次序,加载其他某个目录下的另一
#个..,可以使用mysql --help|grep my.cnf指令查看配置文件的加载顺序。只有/etc/my.cnf这个文件是只读的时候,才会使用这个文件。
vim /etc/my.cnf
#22 mysql 常用指令
service mysql start
service mysql restart
service mysql stop
#登录,需要在mysql 文件夹下执行,如果使用绝对路径,可以在任何地方执行
bin/mysql -uroot -p
Enter password:输入临时密码
#退出mysql
quit;
control+d;
#查询数据库
show databases;
#进入某个数据库
use databasename;
#列出数据库中的表
show tables;
#查看某个表全部字段
desc slow_log;
show create table slow_log\G; (不仅可以显示表信息,还可以显示建表语句)
#查看当前用户
select user();
#查看当前所在数据库
select database();
#创建新表
create table t1 (`id` int(4), `name` char(40));
#查看数据库版本
select version();
#查看数据库状态
show status; 当前会话状态
show global status; 全局数据库状态
show slave status\G; 查看主从数据库状态信息
#查询数据库参数
show variables;
show global VARIABLES;
#修改数据库参数
show variables like 'max_connect%';
set global max_connect_errors = 1000;(重启数据库会失效,要在配置文件中修改)
#查看当前数据库队列
show processlist;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通