一. 检查是否安装过MySQL
检查当前系统是否安装过mysql
执行安装命令前,先执行查询命令
1. CentOS6
rpm -qa|grep mysql
如果存在mysql-libs的旧版本包如下:
请先执行卸载命令:rpm -e --nodeps mysql-libs
2. CentOS7
先执行查询:rpm -qa|grep mariadb
如果存在mariadb执行删除:rpm -e --nodeps mariadb-libs
二. 安装MySQL
1. 将压缩包传到服务器
我这里用的是mysql-5.7.16 , 如需其他版本可自行下载
这里是mysql-5.7.16的压缩包 :
链接:https://pan.baidu.com/s/1zNmv-0Io2BQmp0e3go72Gg
提取码:wjud
2. 解压文件
tar -zxv mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar.gz
3. 安装(按顺序执行)
rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpmrpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpmrpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpmrpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm
查看安装版本:mysqladmin --version
查看mysql用户:id mysql
4. MySQL服务初始化
执行下面的命令初始化:
mysqld --initialize --user=mysql
使用mysql系统用户以安全模式为 root 用户生成一个密码并将该密码标记为过期,登陆后你需要设置一个新的密码
查看密码:cat /var/log/mysqld.log
5. 修改初始化密码
要修改MySQL,首先必须启动MySQL服务,使用初始化密码登录后,才能修改密码:
启动MySQL服务:systemctl start mysqld.service
关闭MySQL服务:systemctl stop mysqld.service
修改密码:ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
6. MySQL自启动
查看mysql是否自启动(默认自启动)
systemctl list-unit-files|grep mysqld.service
如不是enabled可以运行如下命令设置自启动
systemctl enable mysqld.service
7. 修改字符集问题
测试mysql的使用:
出现了编码问题,原因:查看mysql编码(show variables like '%character%';
),发现默认编码是latin1
修改编码,需要修改mysql配置文件:vi /etc/my.cnf
在mysqld下添加一行编码配置:character_set_server=utf8
保存并退出,重启mysql服务:systemctl restart mysqld
已生成的库表字符集如何变更?
修改数据库的字符集:alter database mydb character set 'utf8';
修改数据表的字符集:alter table mytbl convert to character set 'utf8';
8. 远程访问MySQL
接下来用宿主机navicat客户端访问MySQL服务,报如下错误:(确保防火墙已关闭)
原因:默认情况下,mysql不允许远程连接。只允许localhost连接
执行:select host,user,authentication_string,select_priv,insert_priv from mysql.user;
解决方案:
- 创建新的用户(此处省略)
- 修改root用户访问权限
9. 授予root远程访问权限
授权命令:
grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;
该权限如果发现没有该用户,则会直接新建一个用户。
比如
grant all privileges on *.* to root@'%' identified by 'root'; #授予通过网络方式登录的的root用户,对所有库所有表的全部权限,密码设为root.
扩展:
查看当前用户权限:show grants;
查看当前用户的全局权限:select * from user ;
查看某用户的某个表的权限:select * from tables_priv;
收回权限命令:
revoke 权限1,权限2,…权限n on 数据库名称.表名称 from 用户名@用户地址 ;
收回全库全表的所有权限:REVOKE ALL PRIVILEGES ON mysql.* FROM li4@localhost;
收回mysql库下的所有表的插删改查权限:REVOKE select,insert,update,delete ON mysql.* FROM li4@localhost;
必须用户重新登录后才能生效
10. 测试连接
连接测试:
来源地址:https://blog.csdn.net/weixin_45277608/article/details/127714913