- 原文地址:https://github.com/shirayner/java-knowledge-hierarchy/tree/master/doc/Mysql
- 此系列博客是站在大牛的肩膀上所做的总结,主要是方便建立自己的知识体系。所参考的文章会在每篇博客的参考资料部分列出
文章目录
前言
一、LInux安装Mysql
1.使用yum安装
我们将在 Centos7 系统下使用 yum 命令安装 MySQL
1.1 检测
安装前,我们可以检测系统是否自带安装 MySQL:
rpm -qa | grep mysql
如果你系统有安装,那可以选择进行卸载:
rpm -e mysql // 普通删除模式
rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
1.2 安装
1.2.1 添加MySQL Yum
接下来我们在 Centos7 系统下使用 yum 命令安装 MySQL,需要注意的是 CentOS 7 默认安装的是 MariaDB ,所以在安装前我们需要先去官网下载 Yum 资源包,下载地址为:https://dev.mysql.com/downloads/repo/yum/
- a. 前往 mysql yum Repository 下载页面:https://dev.mysql.com/downloads/repo/yum/
- b.复制相应的版本名
- c.根据版本名得到下载地址:
http://repo.mysql.com/版本名
- d.更新添加yum源
wget http://repo.mysql.com/mysql80-community-release-el7-2.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
- e.检测是否成功添加yum源
yum repolist enabled | grep "mysql.*-community.*"
- f.列出yum源中的mysql版本系列,然后启用想用的版本并禁用其他版本。
yum repolist all | grep mysql
发现启用的版本是 mysql5.6 ,我们想使用的是mysql5.7,因此将 mysql5.6禁用,将mysql 5.7 启用
sudo yum-config-manager --disable mysql56-community
sudo yum-config-manager --enable mysql57-community
1.2.2 安装Mysql
sudo yum install mysql-community-server
1.2.3 启动mysql
-
方式一
sudo service mysqld restart # 重启mysql sudo service mysqld status # 查看mysql运行状态
-
方式二
systemctl start mysqld # 启动mysql systemctl status mysqld # 查看mysql运行状态
1.2.4 设置开机自启
systemctl enable mysqld # 设置开机自启
systemctl daemon-reload
1.2.5 修改密码
(1)默认密码
mysql 默认密码会输出到日志中,可通过如下命令查看默认密码
sudo grep 'temporary password' /var/log/mysqld.log
可知默认密码为空
(2)登录mysql
sudo mysql -uroot -p
sudo mysql -h hostname -u username -p # longin on remote server
(3)修改密码
mysql> alter user 'root'@'localhost' identified by 'Ray12345.';
mysql 8 修改的密码必须符合密码校验规则:
validate_password_policy 有以下取值:
默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
有时候,只是为了自己测试,不想密码设置得那么复杂,譬如说,我只想设置root的密码为123456。
必须修改两个全局参数:
-- 1.修改validate_password_policy参数的值
mysql> set global validate_password_policy=0;
-- 2.validate_password_length(密码长度)参数默认为8,我们修改为1
mysql> set global validate_password_length=1;
完成之后再次执行修改密码语句即可成功
mysql> alter user 'root'@'localhost' identified by '123456.';
还可尝试如下方式修改密码(mysql8及以上可能不行):
shell> mysqladmin -u root password "root"; # 可行
mysql> set password for 'root'@'localhost' =password('root');
2.配置mysql
命令行执行如下命令,可查看mysql的相关信息
sudo service mysqld status
由此,可知mysql的相关重要文件如下:
文件或目录 | 描述 |
---|---|
/etc/my.cnf |
Mysql主配置文件 |
/var/lib/mysql |
mysql数据库的数据库文件存放位置 |
/var/log/mysqld.log |
mysql默认的日志文件 |
2.1 配置字符集
修改 /etc/my.cnf
配置文件,在相关节点(没有则自行添加)下添加编码配置,如下:
[mysqld]
character-set-server=utf8
[mysql]
default-character-set=utf8
[client]
character-set-server=utf8
重启mysql服务,查询编码。可以看到已经改过来了
shell> systemctl restart mysqld
shell> mysql -uroot -p
mysql> show variables like 'character%';
2.2 远程连接设置
默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须添加一个允许远程连接的帐户。
2.2.1 删除匿名用户
执行以下sql 查看是否有匿名用户:
select user,host from mysql.user;
执行以下sql 删除匿名用户:
delete from mysql.user where user='';
再次查看:
select user,host from mysql.user;
刷新,使以上操作生效:
flush privileges;
2.2.2 新建用户
创建用户有如下方式:
-
方式一
mysql> create user 'username'@'%' identified by 'password'; -- 新建用户
例如:
mysql> create user 'ray'@'%' identified by 'Ray12345.'; -- 新建用户
-
方式二
-- 创建用户并授权 mysql> grant all on *.* to 'ray'@'%' identified by 'Ray12345.'; -- 暂时有问题 mysql> flush privileges;
2.2.3 授权用户
添加一个允许远程连接的帐户
mysql> grant all on *.* to ray@'%';
mysql> flush privileges;