linux centos mysql5.7安装
1.添加mysql组和mysql用户,用于设置mysql安装目录文件所有者和所属组
①groupadd mysql
②useradd -r -g mysql mysql
* useradd -r参数表示mysql用户是系统用户,不可用于登录系统。
* useradd -g参数表示把mysql用户添加到mysql用户组中。
2.将二进制文件解压到指定的安装目录,我们这里指定为 /usr/local/dev/,也可以是通用的/usr/local
①解压二进制文件, tar -zxvf mysql-5.7.25-el7-x86_64.tar.gz -C /usr/local/dev/
②mv mysql-5.7.25-el7-x86_64.tar.gz mysql 更改mysql目录名称
③cd mysql 进入mysql文件夹,也就是mysql所在的目录,
④更改mysql目录所属的组和用户。更改权限
chown -R mysql .
chgrp -R mysql .
3.初始化 MySQL 配置表
mysql5.7之前版本初始化配置表命令:
script/mysql_install_db --user=mysql --basedir=/Ultrapower/test/mysql --datadir=/Ultrapower/test/mysql/data/
--user 启动mysql的用户
--basedir mysql安装目录
--datadir mysql数据仓库目录
①初始化表配置正确执行步骤:
[root@iZuf68yf0avh1vujs5wxmjZ mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/dev/mysql/ --datadir=/usr/local/dev/mysql/data
2019-04-17T06:36:18.249349Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-04-17T06:36:19.872809Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-04-17T06:36:19.992575Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-04-17T06:36:20.168596Z 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: 1c604368-60db-11e9-9a25-00163e08db58.
2019-04-17T06:36:20.361332Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-04-17T06:36:20.361910Z 1 [Note] A temporary password is generated for root@localhost: Gu/ckhuMm4u3
注意最后一行,这也是和之有版本不同的地方,它给了root一个初始密码,后面要登录的时候要用到这个密码。
②将mysql/目录下除了data/目录的所有文件,改回root用户所有,mysql用户只需作为mysql/data/目录下所有文件的所有者。
[root@rhel5-32 mysql]# chown -R root .
[root@rhel5-32 mysql]# chown -R mysql data
③mysql5.7配置文件需要修改my.cnf关键配置 复制下面这段文字 打开 /etc/my.cnf
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=/usr/local/mysql-5.7.25-el7-x86_64
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql-5.7.25-el7-x86_64/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
bind-address= 0.0.0.0
wait_timeout=2073600
interactive_timeout=2073600
[client]
socket=/tmp/mysql.sock
4. 将mysqld服务加入开机自启动项
将{mysql}/ support-files/mysql.server 拷贝为/etc/init.d/mysql并设置运行权限,这样就可以使用service mysql命令启动/停止服务,
否则就只能使用{mysql}/bin/mysqld_safe &命令来启动服务
还需要把mysql.server中basedir的相关路径,改为自定义的路径,默认路径是/usr/local/mysql
#cp mysql.server /etc/init.d/mysql
#chmod +x /etc/init.d/mysql
把mysql注册为开机启动的服务
#chkconfig --add mysql
查看是否添加成功
[root@rhel5-32 mysql]# chkconfig --list mysql
mysqld 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
5.mysql服务的开启和关闭
#/etc/init.d/mysql start 或者 service mysql start 或者 bin/mysqld_safe&
#/etc/init.d/mysql stop 或者 service mysql stop 或者 bin/mysqladmin -uroot -p
需要把mysqll加入到环境变量中,或者为mysql建立软链接
否则运行mysql命令会出现 -bash: mysql:command not found
不加环境变量,就要使用bin/mysql -uroot -p 或者bin/mysqladmin -uroot -p 命令来登录mysql服务
建立软链接:
ln -s /usr/local/dev/mysql/bin/mysql /usr/bin/mysql
6.加入环境变量
PATH=$PATH:/usr/local/dev/mysql:/usr/local/dev/mysql/bin
export PATH
7.登录mysql服务
执行:mysql -uroot -p生成的密码
连上后,在做任何操作前,mysql要求要改掉root的密码后才能进行操作。
8.启动mysql
[root@rhel5-32 mysql]# service mysql restart
如果报 Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111) 错误。
将/tmp设置mysql权限 执行 chown -R mysql:mysql tmp
先杀死mysql进程 在重新启动就可以service mysqld start
9. 修改密码 创建用户 授权
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MSshms123!@#';
创建用户
create user 'user1'@'%' IDENTIFIED BY '123456';
create user 'test001'@'%' IDENTIFIED BY 'shms123';
授权
命令:
GRANT privileges ON databasename.tablename TO 'username'@'host'
说明:
privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
databasename:数据库名
tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*
grant all on *.* TO 'user1'@'%';
用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
刷新权限
FLUSH PRIVILEGES