普通VPS直接输入命令,谷歌云和甲骨文的云服务器请先输入:sudo -i 进入管理员角色后再操作
一.检查是否应安装了mysql或者mariadb,有的话卸载卸载历史版本MySQL,查看是否拥有历史版本,非首次安装需卸载历史版本MySQL,命令查看是否有安装MySQL历史版本组件:
1.1 检查mariadb
rpm -qa | grep mariadb
1.2 删除mariadb
yum -y remove mariadb*
1.3 检查mysql
rpm -qa | grep mysql
1.4 删除mysql
yum -y remove mysql*
1.5 删除旧的配置文件
rm -rf /etc/my.cnf
1.6 删除文件
rm -rf /var/lib/mysql
二、安装mysql
2.1 配置安装源
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
2.2 安装
sudo yum --enablerepo=mysql80-community install mysql-community-server
2.3 启动mysql
启动
systemctl start mysqld
查看运行状态
systemctl status mysqld
停止
systemctl stop mysqld
重启
systemctl restart mysqld
2.4 查看端口运行情况
netstat -nlpt
三、查看并修改密码
3.1 mysql安装后会生成一个默认密码,此密码登录后要修改密码,不能用于其他操作
cat /var/log/mysqld.log
3.2 登录root账号修改初始密码,复制上面的密码登录
mysql -u root -p
修改密码,注意密码要稍微复杂点(大小写+符号+数字),不然会提示 Your password does not satisfy the current policy requirements
ALTER USER USER() IDENTIFIED BY 'Xinmima@2020';
四、配置远程访问
4.1 查下系统用户,root默认是不允许远程访问的,需要把下图root账户的localhost改成%
use mysql; select user,host,plugin,authentication_string from mysql.user; select user,host,plugin from mysql.user;
4.2 修改root的权限并刷新权限
update mysql.user set host='%' where user='root'; flush privileges;
五、新建mysql账号 + 授权
5.1 新建test账号,%表示允许远程登录 ,改成ip就是ip登录
create user 'test'@'%' identified by 'Xinmima@2020';
下面是是授权部分:
5.2 给test用户授予testdb数据库的所有权限(可远程登陆)
grant all privileges on testdb.* to 'test'@'%'; flush privileges;
5.3 给test用户授予testdb数据库的查询权限(可远程登陆)
grant select on testdb.* to 'test'@'%'; flush privileges;
5.4 给test用户授予testdb数据库的insert,delete,update权限(可远程登陆)
grant insert,delete,update on testdb.* to 'test'@'%'; flush privileges;
5.5 查看用户的权限
show grants for 'test'@'%';
5.6 删除test用户对数据testdb的update权限
revoke update on testdb.* from 'test'@'%'; flush privileges;
六、修改mysql端口
6.1 编辑my.cnf
vi /etc/my.cnf
6.2 默认配置不含port行需自行添加,按esc退出INSERT模式 :wq 保存
port=6666
6.3 重启mysql并查看端口状态 注意:如果是云服务器(如阿里云),一定要检查安全组是否开启相应的端口,不然客户端连不上
systemctl restart mysqld netstat -nlpt
七、修改mysql的数据、日志存放路径
7.1 先停止msyql
systemctl stop mysqld
7.2 先创建好要存储的位置
mkdir -p /data/mysql cd /data/mysql
7.3 把文件移到/data/mysql/文件夹下,cp -a参数是权限也一起复制,然后删除原文件夹
cp -a /var/lib/mysql /data/ rm -rf /var/lib/mysql
7.4 修改软连接
ln -s /data/mysql /var/lib/
7.5 查看软连接
ls -la /var/lib/mysql
下图是正确的软连接方式:
7.6 修改my.cnf配置文件
vim /etc/my.cnf
属性 | 原值 | 修改为 |
---|---|---|
datadir | /var/lib/mysql | /data/mysql |
socket | /var/lib/mysql/mysql.sock | /data/mysql/mysql.sock |
datadir=/data/mysql
socket=/data/mysql/mysql.sock
7.7 启动mysql并查看状态
systemctl start mysqld
7.8 登录mysql,查看数据文件
mysql -u root -p show global variables like "%datadir%";
八、常见问题和处理
8.1 如果客户端连接报错"Authentication plugin 'caching_sha2_password' cannot be loaded",是以为mysql 8的加密方式改了。有两种选择 1、升级客户端 2、把加密方式改为传统的方式
推荐用新的加密方式(一般升级客户端就可以了),老项目代码的话可能有老的jar包等不支持新加密,下面是改为传统加密方式
ALTER mysql.USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Xinmima@2020';
8.2 查找mysql的安装路径
whereis mysql
mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/man/man1/mysql.1.gz
8.3 创建数据库,字符集有两种
方式 | 字符集 | 排序规则 |
---|---|---|
不支持emoji | utf8 | utf8_general_ci |
支持emoji | utf8mb4 | utf8mb4_general_ci |
8.4 查看mysql版本
mysql -V
如果想要远程登录, 则需要进行update更新下root账号的权限
mysql> update mysql.user set host='%' where user="root";
Query OK, 1 row affected (0.10 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.14 sec)
mysql> select host,user,authentication_string from mysql.user;
+-----------+------------------+------------------------------------------------------------------------+
| host | user | authentication_string |
+-----------+------------------+------------------------------------------------------------------------+
| % | bobo | $A$005$1VY")q?G6<^X@-6LsXrPt5C0TwlTuvHbaOa3sYF0DKViIGoRPuCF8AzwiFcim1 |
| % | kevin | $A$005$hy`U}ZB#R::rA8W0y2rmwgySqzv0rmR1eTeNDSaXfQPWIsrh7ytbVdi85 |
| % | root | $A$005$/VO_y^7,]6;2qxggBLmJzhA0Qylu5/AHuRScZ/ykKedgZKh/6krOIzPs2 |
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
+-----------+------------------+------------------------------------------------------------------------+
6 rows in set (0.00 sec)