安装步骤
1.下载软件包,安装依赖环境
2.安装mysql服务器
3.基础安装路径,创用户,与权限
4.初始化
5.添加环境变量,把服务放到开机自启里面
6.启动mysql服务器
7.获取初始密码并且修改
一,下载软件(yum,源码,二进制安装,shell脚本安装,容器化安装(docker一键安装))
1.下载mysql
https://downloads.mysql.com/archives/community/
2.二进制安装
2.1指定安装
将mysql安装到/usr/local/mysql目录中:
做# Centos7安装依赖
yum install -y libaio libaio-devel ncurses ncurses-devel openssl openssl-devel# Ubuntu22.04 安装依赖
sudo apt update
sudo apt install -y libaio1 libaio-dev libtinfo5 libncurses-dev libncurses5 libncurses5-dev libncursesw5 libncursesw5-dev libssl-dev
或者
apt install mysql-server
mysqladmin -u root password
后直接用# 下载MySQL二进制安装包
# 官网下载
# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz#自己拖包进去
# 局域网内下载
wget http://192.168.56.200/Software/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz做# 解压
tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz #校验是否正确 与官方的对比
md5sum 安装包做#将mysql文件剪切并改名,建议的安装路径/usr/local下
mv mysql-8.0.20-linux-glibc2.12-x86_64 /usr/local/mysql做# 不建议用root用户弄数据库所以我们这里,创建mysql用户
useradd mysql -M -s /sbin/nologin做# 创建数据库文件夹
# data文件夹是用于存储数据库文件,他的位置是在mysql目录下
mkdir /usr/local/mysql/data做# 更改mysql目录权限
chown mysql:mysql -R /usr/local/mysql
校验对比,这里安装的是通用版本,适配所有
2.2编译安装
yum -y install ncurses-devel #安装依赖环境
yum -y install perl perl-devel perl-DBD* #看情况安装(安了开发环境就不用了)
拖包
解压缩cmake,并使用cmake工具进行编译安装(其实yum装的cmake也能用)
tar -zxvf ... -C /usr/src
cd ...
./configure
gmake && gmake install
安装完成
3.1初始化数据库:
做#修改MySQL配置文件
vim /etc/my.cnf原有的配置文件不用管全删[mysqld]
port = 3306
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
socket = /tmp/mysql.sock
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-storage-engine=InnoDB
default-authentication-plugin=mysql_native_password
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
sql_mode=NO_ENGINE_SUBSTITUTION:这个设置要求 MySQL 在遇到存储引擎不可用时,直接报错而不是替换成其他可用的存储引擎。
STRICT_TRANS_TABLES:这个设置要求 MySQL 严格遵循事务安全的规则,对于事务中出现警告或错误的操作会导致整个事务回滚。
通过设置这些 SQL 模式,可以帮助确保数据库的数据完整性和一致性,提高数据库操作的准确性和安全性。
做#执行初始化,生成系统自带的初始化数据。
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
做执行完后查看初始密码:
cat /usr/local/mysql/data/error.log
最后一行会显示密码
2025-08-01T01:56:40.744889Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 2VCPj4h!qer(
例如这个,里面的初始密码就是2VCPj4h!qer(
做4.1第一次启动mysql服务(使用官方自带的启动脚本)
/usr/local/mysql/support-files/mysql.server start
执行完上面命令后会有提示
Starting MySQL... SUCCESS!
之后可以将启动脚本复制到/etc/init.d/目录,这是启动脚本的默认目录。
启动MySQl本质执行的是mysqld命令
ps -aux|grep mysqld
查看是否启动
关闭mysql本质是kill mysqld的pid
做 启动(为方便以后命令启用)
另一种把启动命令放到环境变量里面
修改系统环境变量
想要在任意目录执行mysql的命令需要修改/etc/profile(这个文件里写的是重要的环境变量,用于设置全局的环境变量和启动脚本:补充
环境变量设置
- PATH 变量:用于指定命令的搜索路径。系统会在这些路径中查找用户输入的命令,例如在
/etc/profile
中可能会看到类似PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
的设置,将常用的命令目录添加到搜索路径中。)
做
vim /etc/profile
在最后一行添加指定PATH关联MySQL的bin目录
export PATH=$PATH:/usr/local/mysql/bin
配置完成后让系统重新加载/etc/profie文件
source /etc/profile
如何验证上面内容做成功了呢?
他没有显示没有这个命令就是已经将命令加入环境变量中了。这里报错原因是没有输root的密码
我们可以通过 ,登录成功
mysql -u root -p'2VCPj4h!qer(' #把刚刚的密码粘贴上去 加单引号'
四、获取初始密码
5.2修改root密码
5.2.2.使用随机密码登录到MySQL中修改
mysql -uroot -p
Enter password:初始密码 自己在cat /usr/local/mysql/data/error.log这里找
做# 修改密码
mysql> alter user 'root'@'localhost' identified by '123.com';
Query OK, 0 rows affected (0.05 sec)
可以通过自己改的密码登录,就是成功了
不做5.2.1使用mysqladmin命令修改密码
Mysql安装成功后,默认的密码为随机密码,你可以使用以下命令来创建新的root用户的密码:
mysqladmin -u root -p password "root123"
Enter password:初始密码
现在你可以通过以下命令来连接到Mysql服务器:mysql -u root -p
Enter password:*******
注意:在输入密码时,密码是不会显示了,你正确输入即可。
不做 如果密码错了或者修改失败后可以进行5.2.3.MySQL重新初始化
安装时初始化失败或初始密码遗失时可以重新初始化
# 删除 /usr/local/mysql/data目录中数据
rm -rf /usr/local/mysql/data/
mkdir /usr/local/mysql/data
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
cd /usr/local/mysql
cat data/error.log# 方法一:
mysqladmin -uroot -p password "root123"
初始密码# 方法二:
mysql -uroot -p
初始密码
mysql> alter user 'root'@'localhost' identified by 'root123';
Query OK, 0 rows affected (0.05 sec)
不做 5.2.4.跳过MySQL的root密码直接登录
忘记root密码时,可以使用该方法
vim /etc/my.cnf[mysqld]
# 配置的最后添加,跳过密码登录的功能
skip-grant-tables# 重启服务
systemctl restart mysqld
mysql -urootmysql>flush privileges;
Query OK, 0 rows affected (0.05 sec)
mysql>alter user 'root'@'localhost' identified by 'root123';
Query OK, 0 rows affected (0.05 sec)
mysql>\q
# 密码修改成功后,必须在配置文件中删除或注释掉skip-grant-tables# 然后重启服务
systemctl restart mysqld
做 开机自启用systemcl来控制mysql
开机启动、启动、停止、重启、
# 1.方法使用默认启动脚本的路径支持 start 启动 |stop 停止 |restart 重启
/usr/local/mysql/support-files/mysql.server restart# 2./etc/ini.d/mysqld
# 将启动脚本复制到/etc/init.d/目录,这是启动脚本的默认目录。
cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld# -a 参数保留原有权限
# 测试重启
/etc/init.d/mysqld restart# 3.service
# 配置好/etc/ini.d/mysqld后可以使用service命令管理服务
service mysqld restart# 4.systemctl
# 配置mysqld开机启动后,可以使用systemctl管理mysqld
systemctl enable mysqld
systemctl restart mysqld
systemctl status mysqld
不做6.1设置远程连接
查看数据库的用户权限配置基础信息。
生产环境不推荐开放root用户的远程登录权限;
# 登录MySQL mysql -uroot -proot123# 创建远程登录账号 mysql> create user 'root'@'%' identified with mysql_native_password by 'root123'; Query OK, 0 rows affected (0.01 sec)# 设置开放权限 mysql> grant all on *.* to 'root'@'%'; Query OK, 0 rows affected (0.00 sec)# 刷新使权限生效 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
%:代表所有主机,允许root登录所有主机
identified:认证授权
mysql_native_password:密码的一种认证方式,用于兼容低版本的mysql
grant:授权
遇到问题:
Can’t connect to MySQL server on ‘192.168.8.20’ (61)
解决方法:
# 关闭防火墙
systemctl stop firewalld.service
firewall-cmd --state
验证:
在linux客户端安装mariadb
yum -y install mariadb
mysql -u root -p 123.com -h 192.168.1.10(MySQL服务器的ip)
在ubuntu客户端
apt install mysql-client
mysql -u root -p 123.com -h 192.168.1.10(MySQL服务器的ip)
apt install mycli #更强大的一种客户端 有提示
mycli -u root -p 123.com -h ”192.168.1.10“(MySQL服务器的ip)
图形化:
phpmyadmin
如果你是使用apt直接安装的mysql那么还需要在配置文件中允许远程访问
# 打开mysql配置文件。
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# [mysqld] 表示服务端设置
[mysqld]
# 注释下列内容(31行)
# bind-address = 127.0.0.1
# mysqlx-bind-address = 127.0.0.1# 重新设置bind-address
bind-address = 0.0.0.0# 重启MySQL
sudo systemctl restart mysql# 检查3306端口是否为 0.0.0.0:3306
ss -lnutp|grep 3306
navicat
这里的用户名和密码,就是
create user 'root'@'%' identified with mysql_native_password by 'root123';
和这里的一样。
连接成功后就是这个样子的。
不做 7.1mysql卸载步骤(了解)
# 停止mysql服务
/etc/init.d/mysqld stop
Shutting down MySQL.... SUCCESS!# 或者使用systemctl停止
systemctl stop mysqld# 查找所有mysql相关文件夹
find / -name mysql
不做
# 删除所有查出来的文件夹
rm -rf /var/lib/selinux/targeted/active/modules/100/mysql
......# 删除配置文件
# 配置文件一般有/etc/my.cnf 或/etc/init.d/mysql.server,rm -f /etc/my.cnf
rm -rf /etc/init.d/mysqld# 删除用户组userdel mysql
id mysqlid: “mysql”:无此用户
编译安装步骤
编译安装mysql
yum -y install ncurses-devel #安装依赖环境
yum -y install perl perl-devel perl-DBD* #看情况安装(安了开发环境就不用了)
拖包
安装完成
创建用户和组
groupadd mysql
useradd -M -s /sbin/nologin mysql -g mysql
tar -zxvf mysql-5.6.36.tar.gz -C /usr/src/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql #指定安装目录
-DSYSCONFDIR=/etc #指定初始化参数文件目录 #/etc/my.cnf
-DDEFAULT_CHARSET=utf8 #指定默认使用的字符集编码
-DDEFAULT_COLLATION=utf8_general_ci #指定默认使用的字符集校对规则,utf8_general_ci是适用于utf-8字符集的通用规则
-DWITH_EXTRA_CHARSETS=all #指定额外支持的其他字符集
make && make install
安装完成
更改目录的属主属组
chown -R mysql:mysql /usr/local/mysql
建立配置文件
rm -rf /etc/my.cnf #Centos7默认支持Mariadb,系统默认的my.cnf会和mysql冲突,
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf #再将mysql安装包里的默认配置替换过去
初始化
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ #初始化数据库,用mysql的身份执行初始化脚本install_db,指定各种目录
初始化成功
设置变量环境,让我们mysql的命令可以在任何目录下使用
方法一:
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
查看一下
/etc/profile文件为系统的每个用户设置环境变量信息,此文件的修改会影响到所有用户。
我们会发现最后一行多出了以上内容,$PATH变量定义了运行命令的查找路径
给予运行权限,并执行,我们就可以在任何地方使用mysql的命令了。
source /etc/profile #作用:在当前bash环境下读取并执行文件中的命令。
方法二:
ln -s /usr/local/mysql/bin/* /usr/local/bin/
两种方法均可达成结果
使用systemctl控制mysql
cp /usr/src/mysql-5.6.36/support-files/mysql.server /etc/rc.d/init.d/mysqld #复制源文件中的服务文件到rc.d/init.d/下
chmod a+x /etc/rc.d/init.d/mysqld #给予权限
chkconfig --add mysqld #加入服务
chkconfig mysqld on #启动服务
为什么和apache的链接位置不同呢?其实init.d是rc.d/init.d/的一个软链接目录,俩目录一样
添加完成后就可以通过systemctl来控制开关了
添加到系统服务
vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=Mysql server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=5000
[Install]
WantedBy=multi-user.target
复制粘贴即可
就可以将mysqld设置为开机自启了
查看服务端口
netstat -anput | grep mysql
设置密码(第一次)
mysqladmin -u root password
修改密码
mysqladmin -u root -p password
明文修改密码,其中的警告指的是密码明文有危险
正常登录
mysql -u root -p