show
top

linux mysql5.7安装和配置启动详解

自从mysql被oracle公司收购后 centos等默认不能直接通过 yum install mysql. 不过mysql 提供了社区版 这个是开源的。各大云服务厂商也通过此版本提供高性能的云数据库。

1. 配置YUM源

在MySQL官网中下载YUM源rpm安装包:[http://dev.mysql.com/downloads/repo/yum/]

下载mysql源安装包
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

安装mysql源
yum localinstall mysql57-community-release-el7-8.noarch.rpm

检查mysql源是否安装成功
yum repolist enabled | grep "mysql.*-community.*"
如果有消息列出

可以修改vim /etc/yum.repos.d/mysql-community.repo源,改变默认安装的mysql版本。比如要安装5.6版本,将5.7源的enabled=1改成enabled=0。然后再将5.6源的enabled=0改成enabled=1即可。

2. 安装mysql公版

yum install mysql-community-server -- yum安装

mysqld --version --检查安装

通过yum形式安装时 mysql会有个日记文件 记录操作时候的输出信息 比如 在第一次安装时候会给root用户默认生成个符合标准的密码
可以在 /var/log/mysqld.log 查看 。这个日记很强大 如果后面你无法启动mysql 或者忘记密码 msql出错都可以优先来这里看看为什么

3. 配置自定义的数据库目录 (如果想默认就跳过)

通过yum形式安装时 mysql 默认安装 var目录下 以后想扩充容量可能不方便。可以自己建议数据库目录
比如 我想定义 /data/mysql 是数据库存在的地方

mkdir /data/mysql_mine -- 建立base目录

mkdir /data/mysql_mine/data -- 建立数据目录

chown -R mysql:mysql /data/mysql --文件夹属于mysql用户 yum已经帮你添加了

mysql5.7和之前版本不同,很多资料上都是这个命令:mysql_install_db --参数 当然也可以用 但现在 mysql推荐使用
mysqld --initialize --参数 命令 其实也是套了个壳

mysqld --initialize --user=mysql --basedir=/data/mysql_mine --datadir==/data/mysql_mine/data

--user 启动mysql的用户

--basedir mysql安装目录

--datadir mysql数据仓库目录

可能会再次初始化此 因为第一次是yum帮你初始化的 。第二此是手动 获得的信息可以在logs查看 主要是那个密码 不去记也没事 可以强制修改自己要的

vim /etc/my.cnf -- 修改mysql配置

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[mysql] 

default-character-set=utf8 
[mysqld]

#设置utf8编码
character-set-server = utf8
collation-server = utf8_general_ci
skip-character-set-client-handshake

#MYSQL设置不区分大小写
lower_case_table_names=1  
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

#设置数据目录 连接的socket
datadir=/data/mysql_mine/data
socket=/data/mysql_mine/mysql.sock


#skip-grant-tables
validate_password_length=6
validate_password_policy=0
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/data/mysql_mine/logs/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysql]
socket=/data/mysql_mine/mysql.sock  

大致说下 [mysqld]下的是mysqld的配置 [mysql]是mysql的 因为是yum安装的一些bin share 文件还是老地方引用 。没有目录就自己mkdir 记得权限给mysql 。如果想统一指定 可能会导致启动失败 可以看log找百度解决 自行传送门

如果你不知道你的root的密码是什么 请打开 skip-grant-tables的注释,跳过密码验证 免密码登录。

3. 开启mysql

systemctl start mysqld

systemctl status mysqld --检查状态 出错请看日记

mysql -uroot -p 或者 mysql 免密码

第一次登陆 可能遇到 You must reset your password using ALTER USER statement before executing this statement. 的错误 意思是让你修改次密码

alter user user() identified by "123456"; -- 修改root为123456

show Database --显示所有数据库

4. 修改账户信息(如果想默认就跳过)

update user set authentication_string=password('123456') where user='root' and host='localhost'; --设置localhost的root密码为123456

**特别提醒注意的一点是,新版的mysql数据库下的user表中已经没有Password字段了而是将加密后的用户密码存储于authentication_string字段 **

flush privileges; --刷新特权

SELECT HOST,USER,authentication_string FROM USER; -- 查询当前有哪些账户

开通对外账号 方便sql可视化工具远程登录
GRANT ALL ON *.* TO admin@'%' identified by '123456' WITH GRANT OPTION;-- 授权给admin账户所有权限也附上授权其他账户功能
admin账户会自动创建 。当然你也可以给root用户这么做。
%代表任意ip WITH GRANT OPTION 代表授权功能

FLUSH PRIVILEGES; -- 刷新特权

SELECT HOST,USER,authentication_string FROM USER; -- 再次查询

发现你刚新加的账户说明成功! 如果有失败请参考 传送门

如果增加密码强度规则
show variables like 'validate_password%'; -- 检查密码验证配置
如果有列表说明你安装了 没的话也没事 安装 验证密码 插件
install plugin validate_password soname 'validate_password.so'; --安装插件
show variables like 'validate_password%'; -- 检查密码验证配置

+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
6 rows in set (0.00 sec)

有以上信息说明可以配置 也可以通过 SHOW PLUGINS 查看是否安装

变量 说明
validate_password_dictionary_file 密码字典文件,一个密码一行,不区别大小写。在其中的密码被拒绝。
validate_password_length 密码长度
validate_password_policy 密码策略:0 or LOW(只验证长度),MEDIUM (除字典都要 这是默认),STRONG (字典也要)
validate_password_number_count 数字的个数
validate_password_mixed_case_count 是否大小写混合
validate_password_special_char_count 特殊字符的个数

我在上述的my.cnf中使用简单配置 12346就可以通过 方便开发 实际当中按需定义 。

exit --退出

接下来你可以使用你本地root或者远程admin账户操作数据库 注意开通防火墙3306

5. 开机自动启动

systemctl enable mysqld

systemctl daemon-reload

结论 自行安装会碰很多坑 特别5.7比5.6 yum安装确实帮我们省事了不少 比如systemctl 命令可以多加利用 在基础上修改
启动不了就多看日记 多百度查 顺便介绍下 mysql可视化工具 win的SQLyog mac的sequel 。

posted @ 2018-04-06 12:29  蓝波大人  阅读(7294)  评论(0编辑  收藏  举报