Linux mysql5.7(tar.gz)安装

本次安装:mysql默认安装在 /user/local/下,data放在/user/local/mysql安装文件夹/data/,会创建和指定mysql用户组。

1.去mysql官网下载mysql5.7的tar.gz包。(https://dev.mysql.com/downloads/mysql/5.7.html#downloads

 

 

2.解压文件,解压到指定目录。

tar -xzvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz -C /opt/mysql5.7

3.检查旧版是否删除,有则清理,清理步骤

rpm -qa|grep -i mysql

如果显示有如下包则说明已安装mysql

mysql-4.1.12-3.RHEL4.1

mysqlclient10-3.23.58-4.RHEL4.1

如果已安装,则需要删除已安装的数据库,使用以下命令来删除数据库

删除命令:rpm -e --nodeps 包名

( rpm -ev mysql-4.1.12-3.RHEL4.1 )或(rpm -e --nodeps mysql-libs

还可参考相关文章《安装mysql5.6数据库中的清理步骤

4.检查mysql组和用户是否存在,如无创建。[root启动的话,跳过本步骤]

cat /etc/group | grep mysql // 检查

cat /etc/passwd |grep mysql // 检查

groupadd mysql // 创建

useradd -r -g mysql mysql // useradd -r参数表示mysql用户是系统用户,不可用于登录系统; -g指定用户所属的起始群组。

5.在解压好的mysql目录下创建data目录

mkdir data

6.更改mysql目录下所有的目录及文件夹所属组合用户[root用户启动的话,跳过本步骤]

cd /opt/mysql5.7/ // cd到mysql解压的目录

chown -R nginxgroup:nginxuser mysql/ 前面的是组,后面的是用户

7.配置my.cnf 

到/etc里面找my.cnf文件,没有就自己建

并写入以下内容(这个地方看着配哟,注意路径):

[mysqld]
datadir=/opt/mysql5.7/data  # 指定数据文件存放位置
basedir=/opt/mysql5.7  # 指明mysql的安装路径(指定tar解压文件目录就好了)
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

8.执行安装脚本,注意修改参数。(安装好之后,最后一排会打印出初始密码),这里如果报错,可能是第7步的文件路径有问题。[这里的用户建议还是用root吧,毛事太多了]

./mysqld --initialize --user=mysql

9.启动服务(bin目录下)这里指定root好了,指定你新建的用户毛事太多了。nohup其实可以不要,只加个&就好了

nohup ./mysqld_safe --user=mysql & //(这里报错,多半是第7步中的文件夹没有,注意给它mkdir,如果报那个什么.sock找不到,多半是mysql没有启动,或者my.cnf生成位置的文件路径设置不对,不对的话,它会报在哪里哪里找不到sock文件,你把第7步的socket指定到它说的那里就好。只要你正确启动了mysql,你就会有.sock文件)

10.将mysqld服务加入开机自启动项。(这一步就算了,因该不会成功) 

将{mysql}/ support-files/mysql.server 拷贝为/etc/init.d/mysql并设置运行权限,这样就可以使用service mysql命令启动/停止服务, 
否则就只能使用{mysql}/bin/mysqld_safe &命令来启动服务 
还需要把mysql.server中basedir的相关路径,改为自定义的路径,默认路径是/usr/local/mysql

[root@dbserver support-files]# cp mysql.server /etc/init.d/mysql  
[root@dbserver support-files]# chmod +x /etc/init.d/mysql 
-- 把mysql注册为开机启动的服务
[root@dbserver support-files]# chkconfig --add mysql  
-- 查看是否添加成功
[root@dbserver support-files]#  chkconfig --list mysql  
Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

mysql           0:off   1:off   2:on    3:on    4:on    5:on    6:off

11.启服务(这一步报错可能是第10步中加到ini.d文件夹中mysql文件的某些路径配置不对)

[root@dbserver bin]# service mysql start
Starting MySQL.Logging to '/var/log/mysql/mysql.log'.
 ERROR! The server quit without updating PID file (/var/lib/mysql/dbserver.pid).

解决

[root@dbserver mysql]# rm  /etc/my.cnf
rm: remove regular file '/etc/my.cnf'? y
[root@dbserver mysql]# /etc/init.d/mysql start 
Starting MySQL.Logging to '/usr/local/mysql/data/dbserver.err'.
 SUCCESS! 
[root@dbserver mysql]# service mysql start
Starting MySQL SUCCESS! 

12.登录mysql[如果启动成功了,但是报某个文件夹中找不到sock的话:find / -name mysql.sock 然后建个软连接 ln -s /var/lib/mysql/mysql.sock /某个文件夹/ ]

[root@dbserver bin]# ./mysql -u root -p
密码是第7步产生的密码

13.设置密码

mysql>  set password=password("root");
Query OK, 0 rows affected, 1 warning (0.00 sec)
注意不要使用单引号,为什么?你自己试试就知道了

14.设置远程登录权限 (如果远程连不上,看下配置文件里的bind-address是不是0.0.0.0)

[有时可能有两个root,这一步的更新语句可能只更新了一个,需要到mysql库的user表中查看详细的情况]

[有时可能只有一个root,但是这一步会新建一个root,密码也也不知道是啥,如果不是*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 (123456加密后的字符),则注意替换,别最后登陆都登陆不进来]

【总之就是:确定好user表中的用户名,host信息,密码之后再刷新权限并退出】

这一步如果报 ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.则先需要执行一次13步。

mysql>  grant all privileges on *.* to'root' @'%' identified by '你的密码';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.06 sec)

mysql> quit
Bye

 

其他异常处理:

1】unknown variable 'defaults-file=/etc/my.cnf' 未找到配置文件。解决:启动时,可以在mysqld_safe后加上参数--default-file=/etc/my.cnf,用来指定配置文件。也可能是权限异常,chmod 644 /etc/my.cnf,来调整my.cnf权限

2】Can't start server: can't check PID filepath: No such file or directory 一般是由于服务器强制关机导致pid文件丢失。解决:

2.1 在/etc/my.cnf 中查看pid-file的位置 pid-file=/var/run/mysql/mysqld.pid 。

2.2 创建对应的目录并修改权限 mkdir -p /var/run/mysql chown root /var/run/mysql 这时可以尝试重启mysql了。 如果还不行继续第三步

2.3 创建一个pid文件并修改权限 touch /var/run/mysql/mysqld.pid chown root /var/run/mysql/mysqld.pid 再启动MySQL应该就没问题了。

忘记密码如何处理:

1】先kill掉mysql5.7

2】./mysqld_safe --skip-grant-tables --skip-networking &       安全模式启动

3】update mysql.user set authentication_string=password('123456') where user='root';      修改root用户密码为123456

4】flush privileges;   应用修改

 

 

mysql 5.7 修改账号密码

法一:

mysql> update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost';

法二:

mysql> alter user 'root'@'localhost' identified by '123';

法三:

mysql> set password for 'root'@'localhost'=password('123');

记得最后要刷新权限

mysql> flush privileges;
 
发布者:songJian   点击数:5056   发布时间:2018-06-28 00:22:59   更新时间:2023-03-13 12:11:19
正在加载评论...