mysql的安装大体上也分为两种方式,手动下载安装和yum安装,以下分别进行介绍。
yum安装
注意,本yum安装的环境是阿里云的centos7.9,默认安装的版本是mysql8.0的Community版本。
下载和安装
- 更新yum源:
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
- 运行以下命令,进行yum安装
sudo yum -y install mysql-community-server --enablerepo=mysql80-community --nogpgcheck
- 完成后通过以下命令查看mysql版本
mysql -V
出现以下信息说明安装成功
初始配置
- 启动服务,设置开机启动
sudo systemctl start mysqld
sudo systemctl enable mysqld
- 运行以下命令,获取并记录root用户的初始密码
sudo grep 'temporary password' /var/log/mysqld.log
执行结果如下:
2022-02-14T09:27:18.470008Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: r_V&f2wyu_vI
- 运行以下命令,进行安全配置
sudo mysql_secure_installation
-
设置密码
Enter password for user root: #输入已获取的root用户初始密码 The existing password for the user account root has expired. Please set a new password. New password: #输入新的MySQL密码 Re-enter new password: #重复输入新的MySQL密码 The 'validate_password' component is installed on the server. The subsequent steps will run with the existing configuration of the component. Using existing password for root. Change the password for root ? ((Press y|Y for Yes, any other key for No) :Y #输入Y选择更新MySQL密码。您也可以输入N不再更新MySQL密码。 New password: #输入新的MySQL密码 Re-enter new password: #重复输入新的MySQL密码 Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :Y #输入Y确认使用已设置的密码。
-
删除匿名用户(以下为可选设置)
-
禁止root远程访问
-
删除test库
设置远程访问方式
-
登录mysql
sudo mysql -uroot -p
-
依次运行以下命令,创建远程登录MySQL的账号,并允许远程主机使用该账号访问MySQL
#创建数据库用户dmsTest,并授予远程连接权限。 create user 'testuser'@'%' identified by 'Abc@123456'; #为dmsTest用户授权数据库所有权限。 grant all privileges on *.* to 'testuser'@'%'; #允许远程方式,通过密码验证 ALTER USER 'testuser'@'%' IDENTIFIED WITH mysql_native_password BY 'Abc@123456'; #刷新权限。 flush privileges;
-
通过NaviCat连接成功,(注意服务器端要开放3306的端口)
手动下载安装
接下来介绍手动安装
安装环境检查
检查是否已有mysql或者mariadb。玛利亚DB是一个mysql的轻量化版本,一般存在于自己搭建的cenos环境中,所以要先把它删除掉。在阿里云的环境里,默认没有玛利亚DB,所以没有这一步
rpm -qa | grep mysql
rpm -qa | grep mariadb
搜索安装目录
whereis mysql
找到后进行删除
rpm -e --nodeps mysql-xxxx
rpm -e --nodeps mariadb-libs
下载和安装
在如下地址下载mysql社区版本:
https://downloads.mysql.com/archives/community/
也可以使用wget下载,需要事先安装wget工具
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.2.0-linux-glibc2.28-x86_64.tar.xz
下载后放到opt/apps目录下,执行解压
tar -zxvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
# 如果是xz,比如如下版本,请按如下解压
tar -xvJf mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
文件夹名字修改为 mysql5.7,(如果你安装的是mysql8,建议文件夹名字是mysql8),创建用户和赋予权限
mv mysql-5.7.36-linux-glibc2.12-x86_64 mysql5.7
groupadd mysql #创建属组
useradd -r -g mysql mysql #创建用户
chown -R mysql:mysql mysql5.7
chmod -R 775 mysql5.7
进入mysql5.7文件夹,创建data
mkdir data
如果直接安装可能报错:
错误信息:Installing MySQL system tables…/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
这是因为缺少依赖库,先安装libaio
yum install -y libaio
进入bin目录下,执行安装命令
./mysqld --initialize --user=mysql --datadir=/opt/apps/mysql5.7/data --basedir=/opt/apps/mysql5.7
注意,此处如果安装版本是MySQL8以上,需要指定-lower-case-table-names=1,也就是不区分大小写,否则以后可就要踩大坑了。
./mysqld --initialize --user=mysql --lower-case-table-names=1 --datadir=/opt/apps/mysql8.0/data --basedir=/opt/apps/mysql8.0
保存最后出现的初始密码备用:
A temporary password is generated for root@localhost: VdP5jwn.oAQ!
初始设置
修改环境变量:
vim /opt/apps/mysql5.7/support-files/mysql.server
:set number
注意以下都修改为安装路径
63 mysqld_pid_file_path=
64 if test -z "$basedir"
65 then
66 basedir=/opt/apps/mysql5.7
67 bindir=/opt/apps/mysql5.7/bin
68 if test -z "$datadir"
69 then
70 datadir=/opt/apps/mysql5.7/data
71 fi
72 sbindir=/opt/apps/mysql5.7/bin
73 libexecdir=/opt/apps/mysql5.7/bin
创建软链接
ln -s /opt/apps/mysql5.7/support-files/mysql.server /etc/init.d/mysql
ln -s /opt/apps/mysql5.7/bin/mysql /usr/bin/mysql
创建配置文件
vim /etc/my.cnf
内容如下:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 作用是禁止域名解析:在mysql的授权表中就不能使用主机名了,只能使用IP
skip-name-resolve
# 设置3306端口
port = 3306
# 设置远程访问ip
bind-address=0.0.0.0
# 设置mysql的安装目录
basedir=/opt/apps/mysql5.7
# 设置mysql数据库的数据的存放目录
datadir=/opt/apps/mysql5.7/data
log_error=/opt/apps/mysql5.7/data/error.log
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 设置查询操作等不区分大小写
lower_case_table_names=1
sql_mode =STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
设置文件权限:
chmod -R 775 /etc/my.cnf
启动和修改密码
启动服务,和其他常用命令
# 启动
service mysql start
# 关闭和重启
service mysql stop
service mysql restart
设置开机启动
chkconfig --add mysql
chkconfig --list # 确认是否开机启动
用刚刚的密码登录
mysql -u root -p
然后修改密码
set password for root@localhost = password('abc@1234');
# mysql8用以下命令
ALTER USER 'root'@'localhost' IDENTIFIED BY 'abc@1234';
quit
允许远程连接
允许远程用户连接,这里最后新建一个用户来远程连接,用root来进行远程连接是不安全的:
grant all privileges on *.* to 'root'@'%' identified by 'abc@1234';
# Mysql8需要修改用户属性
update user set user.Host='%' where user.User='root';
# 设置通过密码认证
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'abc@1234';
flush privileges;
以下命令可以查看用户
select host,user,password_expired,password_last_changed,password_lifetime FROM mysql.user;
如果开启了防火墙,首先开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启一下防火墙服务
firewall-cmd --reload
然后就可以通过Navicat连接了