资源到官网自行下载
1、先卸载系统自带的mariadb
yum remove mariadb* -y
2、添加mysql用户
useradd -s /sbin/nologin -M mysql
3、上传安装包到 /server/tools
mkdir -p /server/tools
cd /server/tools/
yum install -y lrzsz
然后把文件上传再解压,解压后的文件夹放到安装目录下并重命名为mysql,这里安装目录为/application
tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
mkdir /application
mv mysql-5.7.26-linux-glibc2.12-x86_64 /application/mysql
4、设置环境变量并使之生效(慎重选择,别不小心清空了环境变量文件,可以用vim),mysql -V查看版本
echo 'export PATH=/application/mysql/bin:$PATH'>>/etc/profile
source /etc/profile
mysql -V
5、创建数据路径 /data并授权,blkid查看UUID并设置开机自动挂载(新手建议用vim更改,不建议用追加)
-
添加一块新磁盘模拟数据盘

-
格式化并设置开机自动挂载磁盘
mkfs.xfs /dev/sdb
mkdir /data
blkid
echo 'UUID=ebbb821d-7374-48af-8408-b31123f33502 /data xfs defaults 0 0'>>/etc/fstab
mount -a
df -h
- 安装目录和数据目录授权
chown -R mysql.mysql /application/*
chown -R mysql.mysql /data
6、初始化数据(创建系统数据)
mkdir /data/mysql/data -p
chown -R mysql.mysql /data
mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
说明:
–initialize 参数:
对于密码复杂度进行定制:12位,4种
密码过期时间:180
给root@localhost用户设置临时密码
报错:
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解决:
yum install -y libaio-devel
mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
执行完上一句后最后一行会出现临时密码
[Note] A temporary password is generated for root@localhost: =mrV)_16is4U
–initialize-insecure 参数:
无限制,无临时密码
rm -rf /data/mysql/data/*
mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
7、生成配置文件
cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock
EOF
8、启动数据库
- sys-v
cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
service mysqld restart
- systemd
注意: sysv方式启动过的话,需要先提前关闭,才能以下方式登录
service mysqld stop
cat >/etc/systemd/system/mysqld.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF
systemctl start mysqld.service
MySQL数据库无法启动
without updating PID 类似错误
查看日志:
在哪?
/data/mysql/data/主机名.err
[ERROR] 上下文
可能情况:
/etc/my.cnf 路径不对等
/tmp/mysql.sock文件修改过 或 删除过
数据目录权限不是mysql
参数改错了
9、设置管理员密码:
mysqladmin -uroot -p password
mysql -uroot -p
管理员用户密码忘记了?
解决办法
先关闭数据库
–skip-grant-tables #跳过授权表
–skip-networking #跳过远程登录
service mysqld stop
mysqld_safe --skip-grant-tables --skip-networking &
mysql
alter user root@'localhost' identified by '123456';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
flush privileges;
alter user root@'localhost' identified by '123456';
或者使用
grant all on *.* to root@'localhost' identified by '123456' ;
改完密码后重启下数据库服务即可
service mysqld restart
查看用户名权限和密码
select user,host,authentication_string from mysql.user

ps:
(启动数据库方式建议只设置一种,使用sys-v,不然systemd在管理员设置密码mysql_safe设置密码后systemctl restart mysqld.service重启后还是带有–skip-grant-tables --skip-networking参数,或者用mysql_safe不带参数的执行,然后在配置文件里配置–skip-grant-tables --skip-networking参数)
正常启动mysql时过滤mysql进程和端口号如下

使用skip启动mysql的进程和端口是如下图

检查发现是配置文件中或者myql_safe选项中使用了 skip-networking,可以看到这个选项的的作用是不监听端口,同主机的用户通过 sockets 进行链接。外部主机由于没有监听端口,将无法连接。
配置文件中可以注释掉skip-networking

最后再以sys-v的方式重启mysql(建议不要以system的方式重启,可能会失败)
正常情况下的system启动的mysql

system停止mysql后

修改管理员密码时


system重启mysql后报错有两个进程

**
kill相关mysql进程后启动(这都是在实验环境的,生产环境建议不要kill数据库进程,有很大可能数据库正在写入而导致崩溃!!!!!!!),所以建议使用/etc/init.d/mysqld restart
**

本文详细介绍MySQL数据库在Linux系统的安装步骤,包括环境准备、配置文件创建、数据目录设置、初始化及常见问题解决方法。
2552

被折叠的 条评论
为什么被折叠?



