05-安装 MySQL5.7

1. 检查工作

  • 检查当前系统是否安装过 MySQL
    • [CentOS6] rpm -qa|grep mysqlrpm -e --nodeps mysql-libs
    • [CentOS7] rpm -qa|grep mariadbrpm -e --nodeps mariadb-libs
  • 检查当前 MySQL 依赖环境
    • libaio:rpm -qa|grep libaio
    • net-tools:rpm -qa|grep net-tools
  • 检查 /tmp 文件夹权限

2. 安装

在 MySQL 的安装文件目录下执行(必须按照顺序):

rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm

3. 服务初始化

为了保证数据库目录为与文件的所有者为 MySQL 登陆用户,如果你是以 root 身份运行 MySQL 服务,需要执行下面的命令初始化:mysqld --initialize --user=mysql

另外 --initialize 选项默认以“安全”模式来初始化,则会为 root 用户生成一个密码并将该密码标记为过期,登陆后你需要设置一个新的密码。

查看密码:cat /var/log/mysqld.log

4. 服务启动+首次登陆

  • 启动:systemctl start mysqld.service
  • 关闭:systemctl stop mysqld.service
  • 状态:systemctl status mysqld.service
  • 重启:systemctl restart mysqld.service

首次登陆通过 mysql -uroot -p 进行登录,在 Enter password 时录入初始化密码。进入之后,因为初始化密码默认是过期的,所以查看数据库会报错。需要修改密码:ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';。设置完密码就可以用新密码登陆,正常使用数据库了。

5. 是否自启动

查看 MySQL 是否自启动(默认自启动):systemctl list-unit-files | grep mysqld.service

如不是 enabled 可以运行如下命令设置自启动:systemctl enable mysqld.service

6. 字符集

直接插入中文数据报错。

  1. 修改配置文件:vim /etc/my.cnf,在最后加上中文字符集配置:character_set_server=utf8
  2. 重新启动 MySQL:systemctl restart mysqld.service
  3. 已生成的库表字符集如何变更
    修改数据库的字符集
    mysql> alter database mydb character set 'utf8';
    修改数据表的字符集
    mysql> alter table testTab convert to character set 'utf8';
    

一定要注意!除了增加 character_set_server=utf8 到 my.cnf 外,已创建的库表还要单独修改字符集。

7. 远程登陆

先确保有可以通过远程登录的账户。

user 表字段说明:

  • host:表示连接类型
    • % 表示所有远程通过 TCP 方式的连接
    • localhost 本地方式通过命令行方式的连接 ,比如 mysql -u xxx -p xxx 方式的连接。
  • user:表示用户名,同一用户通过不同方式链接的权限是不一样的。
  • password:密码。所有密码串通过 password(明文字符串) 生成的密文字符串。加密算法为 MYSQLSHA1,不可逆。MySQL 5.7 的密码保存到 authentication_string 字段中而不再使用 password 字段。


如果测试的时候,还是连接不上,看看防火墙。

systemctl stop firewalld.service        # 停止firewall
systemctl disable firewalld.service     # 禁止firewall开机启动
systemctl restart iptables.service      # 重启防火墙使配置生效
systemctl enable iptables.service       # 设置防火墙开机启动

详细关于防火墙:https://www.cnblogs.com/yyxq/p/10551274.html

8. sql_mode

sql_mode 是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。在生产环境必须将这个值设置为严格模式,所以开发、测试环境的数据库也必须要设置,这样在开发测试阶段就可以发现问题。

查看 sql_mode:show variables like 'sql_mode';

sql_mode 常用值如下:set sql_mode='ONLY_FULL_GROUP_BY';

原文地址:https://www.cnblogs.com/liujiaqi1101/p/13930852.html