一.环境:
操作系统:Linux Centos7
数据库:Mysql5.7
二.安装步骤
采用二进制包安装,方便定制属性。
- 下载mysql 二进制安装包
https://dev.mysql.com/downloads/mysql/
选择 linux-Generic
我的版本是:mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz - 查看操作系统是否有自带的mysql,如有则卸载
rpm -qa | grep mysql
rpm -qa | grep mariadb
- 创建/soft 文件夹并上传压缩包后解压
mkdir /soft
tar xvzf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
- 移动解压后的文件到/usr/local目录下并重命名
mv mysql-5.7.17-linux-glibc2.5-x86_64 /usr/local/mysql
- 创建mysql组及mysql用户
groupadd mysql
useradd -m -g -r mysql -s /bin/false mysql
- 创建相关目录
mkdir /var/log/mysql
mkdir /usr/local/mysql/data
- 初始化mysql
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data -- explicit_defaults_for_timestamp
内容如下:
017-03-23T01:57:06.821038Z 0 [Warning] InnoDB: New log files created, LSN=45790
2017-03-23T01:57:07.048639Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2017-03-23T01:57:07.165356Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 04ed965a-0f6c-11e7-85a1-00163e02462c.
2017-03-23T01:57:07.167725Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2017-03-23T01:57:07.168255Z 1 [Note] A temporary password is generated for root@localhost: Dlicoc_!h6Vs
—有几条warning是正常的。
—最后一条给出的随机root密码要记住
- 生成数据库需要的秘钥文件
./mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
10.创建my.cnf文件
Vi /etc/my.cnf
写入如下内容: —各参数根据环境不同调整
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
character-set-server=utf8
socket=/tmp/mysql.sock
[client]
port=3306
socket=/tmp/mysql.sock
- 添加mysql环境变量
vi /etc/profile
在末尾加入:
export PATH=/usr/local/mysql/bin:$PATH
保存后退出 执行命令,刷新环境变量
source /etc/profile
- Mysql 服务添加为系统服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql.service
chkconfig --add mysql.service
—mysql添加为系统服务
chkconfig --list mysql.service
----查看服务是否添加成功
chkconfig mysql.service on
----设为开机启动 - 启动mysql
systemctl start mysql.service
- 登录mysql
mysql –u root –p
然后输入之前随机的密码 - 更改root密码
Mysql> set password=password('123456');
- 授予root远程连接权限
Mysql> grant all privileges on *.* to root@'%' identified by '123456';
Mysql>flush privileges;
三.Mysql基本操作详解
useradd
创建用户
-g
指定用户所属组
-r
建立系统账号
-m
自动建立用户的登入目录
-s
指定用户使用的shell 可忽略
常用useradd -r -m mysql(用户) -g mysql(组)
- 初始化
./mysqld --initialize --user=mysql(用户名)
--basedir=/usr/local/mysql(mysql安装目录)
--datadir=/usr/local/mysql/data(data文件目录)
-- explicit_defaults_for_timestamp
具体讲解参考 https://www.cnblogs.com/JiangLe/p/6956865.html - mysqld_safe和mysqld区别
mysqld_safe
是mysqld的守护进程,所以mysqld_safe会在启动mysql后继续监控其运行情况,并在其死机是重启程序。
主要启动参数:
--basedir=path
mysql安装的目录
--datadir=path
mysql数据的路径
--socket=path
用于连接本地的unix套接字
--user={user_name | user_id}
用户名或者用户ID登录(指系统用户而不是mysql授权表中的用户) - 添加为系统服务,详情看:
- 关于mysql.sock问题 详情看:https://blog.csdn.net/thanklife/article/details/69225724
- mysqladmin mysql官方的shell连接工具
-u 用户 -h 主机名 -p 密码 -P端口
mysqladmin -uroot -p password
可以更改密码 - 授权 grant +select,delete等权限(all privileges所有权限)on my.user库.表(*.*所有库)to root(用户)@ ‘IP地址’ %’ (所有IP) identified by ‘123456’(密码)
例如:grant all privileges on *.* to root@'%' identified by '123456';
权限在mysql.user表中,可以select user,host from user;
看到,
注意 :mysql5.7 删除了password
字段,user表中密码由authentication_string
字段表示