1.检查之前是否安装过mysql
rpm -qa | grep mysql
如果之前安装过,删除之前的安装包
rpm -e 安装包
如果没有,进行后续安装
2. 下载
3. 将文件复制到linux 环境中
使用xshell工具将下载的文件传输到服务器上
4. 解压到指定路径下
创建目录 /usr/local/mysql(将mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz 里边的文件放在mysql下)
tar -zxvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz -C /usr/local/mysql/
5. 检查是否已经有mysql 用户或者组
如果没有,就进行添加
groups mysql
添加用户组和用户
groupadd mysql && useradd -r -g mysql mysql
再执行 groups mysql 看是否添加成功
6. 创建数据目录并赋权
创建目录
mkdir -p /data/mysql
赋权
chown mysql:mysql -R /data/mysql
7. 修改配置文件
vim /etc/my.cnf
[mysqld]
设置为0.0.0.0表示任意主机都可以访问,如果设置为127.0.0.1 表示只可以本地访问
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
character_set_server=utf8mb4
socket=/var/lib/mysql/mysql.sock
Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
8.初始化配置信息
cd /usr/local/mysql/bin/
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
如果有以下报错:
./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
安装 libaio
yum install -y libaio
安装完成之后重新初始化配置信息
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
9. 查看初始密码信息
cat /data/mysql/mysql.err
在 A temporary password is generated for root@localhost: 后边就是
10. 启动
/etc/init.d/
有时候要实现在不使用 kill 或 killall 命令的情况下,能干净的启动或杀死一个进程。
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
service mysql start
有时候启动报错:
Redirecting to /bin/systemctl start mysql.service
Failed to start mysql.service: Unit not found.
解决:
whereis mysql 看下是否存在
ll /etc/init.d/ | grep mysql 看下是否存在
find / -name mysql.server 查看位置
将第三步搜索到的服务复制到init.d
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
重新启动试试
报错:
Starting MySQLCouldn't find MySQL server (/usr/local/mysql/[FAILED]ld_safe)
报错:
tarting MySQL.2024-09-25T09:59:39.151645Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
The server quit without updating PID file (/data/mysql/mysq[FAILED]
处理:
mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb/
11. 修改数据库密码
- 开启免密登录
vim /etc/my.cnf
在[mysqld] 下添加
skip-grant-tables
- 重启服务
service mysql restart
- 登录
/usr/local/mysql/bin/mysql -u root -p
- 刷新规则允许外部访问
use mysql #选择访问mysql库
update user set host = '%' where user = 'root'; #使root能再任何host访问
FLUSH PRIVILEGES; #刷新
- 修改密码
ALTER USER "root"@"%" IDENTIFIED BY "123456";
FLUSH PRIVILEGES; #刷新
- 退出
exit
7.恢复密码登录
vim /etc/my.cnf
service mysql restart # 重启服务
- 密码登录
/usr/local/mysql/bin/mysql -u root -p
输入密码
注意:阿里云需要开放3306端口
授权对象最好使用具体的ip保证安全