我是自己从windows先把mysql的linux包下下来,通过共享的方式将mysql的安装包复制到linux *** 作系统的/usr/local/mysql 路径下
1、我下载的包是:mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz
故先解压再安装
1)xz -d mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz
2)tar -xvf mysql-8.0.22-linux-glibc2.12-x86_64.tar
2、查看linux系统下是否有安装mysql,有的话先卸载,查看命令
whereis mysql;find / -name mysql
将查找出来的文件和目录都删除掉,删除后再用以上命令查看是否删除干净
3、为mysql创建所属用户组和用户名(如果用户组和用户名存在就无需创建了,使用cat /etc/group | grep mysqlcat /etc/passwd | grep mysql)
groupadd mysql
useradd -r -g mysql mysql
4、在/usr/local/mysql创建data目录
mkdir /usr/local/mysql/data
5、将mysql设置权限
chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql
6、 编译安装并初始化数据库
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
编译安装初始化数据库的时候出现问题报没有libaio这个软件
可通过yum进行安装该软件:yum install libaio-devel.x86_64
如果你不知道包名是什么,可通过 yum search libaio,会列出来相关的包,选择你要安装的包就可以了
初始化成功后:记录日志最末尾位置root@localhost:后的字符串,此字符串为mysql管理员临时登录密码。
7、编辑配置文件my.cnf
此处我打开后my.cnf默认有如下:
[mysqld]
datadir=/var/mysql/data
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
随后我根据参考步骤将其余几项也添加进去,且修改了datadir 将socket这项删除了
[mysqld]
datadir=/usr/local/mysql/data
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=600
innodb_file_per_table=1
lower_case_table_names=1
character_set_server=utf8
8、启动mysql服务器
/usr/local/mysql/support-files/mysql.server start
问题来了,怎么都启动不了,老是说the server PID file not found
我将百度上所有的方法都试了一边都不行,百度上的方法有如下:
MySQL server PID file could not be found! 解决办法
1.可能是/usr/local/mysql/data/rekfan.pid文件没有写的权限
解决方法 :给予权限,执行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data” 然后重新启动mysqld!
2.可能进程里已经存在mysql进程
解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!
3.可能是第二次在机器上安装mysql,有残余数据影响了服务的启动
解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。本人就是使用第三条方法解决的 !http://blog.rekfan.com/?p=186
4.mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)
解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data
5.skip-federated字段问题
解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。
6.错误日志目录不存在
解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限
7.selinux惹的祸,如果是centos系统,默认会开启selinux
解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。
8.解决办法
cd/usr/local/mysqlcd/usr/local/mysqlchown -R mysql.mysql .
su−mysqlsu−mysql cd /usr/local/mysql
scripts/mysqlinstalldbscripts/mysqlinstalldb exit
/etc/init.d/mysqld restart
上面没有解决的话,查看磁盘空间大小 df -h 清空binlog
如果上面都不成的话,最终解决办法,如果是主从的话,要重新同步
删除了 ib_logfile0 和 ib_logfile1 两个文件,就正常了
后面我从另外一篇文档上找到了根本原因https://blog.51cto.com/ludihua/1431544,意思是参考自己数据库编译安装初始化的时候的错误日志,根据错误的日子去找原因,我在/usr/local/mysql/data/centos7.err里找到了,就是说mysql启动时使用的datadir是错误的,告诉我需要重新创建data,
此后我将原先的data改名为data1,再次重新初始化一下生成data后,就可以正常启动了。(个人认为肯定是初始化的时候,datadir没有将my.cnf中的datadir覆盖导致的)
9、为mysql启动创建软连接:
ln -s /usr/local/mysql/bin/mysqld /usr/bin/mysql
10、数据库好不容易装好后,有忘记数据库登录的密码,修改密码也耗了好多时间,因为不知道mysql5.6以上版本将password()这个函数去掉了,mysql8.修改登录密码如下:
参考:https://www.cnblogs.com/nuanyingzi/p/13432465.html
1) 进入配置文件 vim /etc/my.cnf 添加代码 skip-grant-tables 即可跳过mysql密码验证进行登录
2)重启mysql
3)需要先将root密码置空 update user set authentication_string='' where user = 'root'
4)再次编辑配置文件my.cnf 去除免密码登陆
修改mysql配置,删掉或注释掉步骤1中添加的语句 skip-grant-tables
5)重启服务
service mysql restart
6)修改密码,执行如下命令:
mysql -u root -p //提示输入密码时直接敲回车,刚刚已经将密码置空了
开始修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码'
FLUSH PRIVILEGES
1查找以前是否安装有mysql,使用下面命令:
rpm -qa|grep -i mysql
如果显示有如下包则说明已安装mysql
mysql-4.1.12-3.RHEL4.1
mysqlclient10-3.23.58-4.RHEL4.1
2
如果已安装,则需要删除已安装的数据库,使用以下命令来删除数据库
删除命令:rpm -e --nodeps 包名
( rpm -ev mysql-4.1.12-3.RHEL4.1 )
删除老版本mysql的开发头文件和库
命令:rm -fr /usr/lib/mysql
rm -fr /usr/include/mysql
注意:卸载后/var/lib/mysql中的数据及/etc/my.cnf不会删除,如果确定没用后就手工删除
rm -f /etc/my.cnf
在Linux安装软件需要预先做好如下一些准备:准备好Linux *** 作系统如:CentOS7。配置好yum源。完成上述准备后,就可以动手安装MySQL数据库了。主要安装步骤如下:
1. 禁用selinux
setenforce 0
2. 上传安装文件到Linux
3.解压rpm包
tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
4.安装软件
yum install mysql-community-{libs,client,common,server}-*.rpm
5.启动mysql数据库初始化
systemctl start mysqld
6.修改vi /etc/my.cnf
添加:
[mysqld]
#可以在表中录入中文
character-set-server=utf8 #
explicit-defaults-for-timestamp
# 禁用当前密码认证策略,可以使用简单密码(生产环境不适用)
validate_password=0
7.重启mysql服务
systemctl restart mysqld
8.找临时登录密码
grep -i "temporary password" /var/log/mysqld.log
9.连接MySQL数据库
mysql -uroot -p 输入临时密码
10.修改root用户登录密码为简单密码(生产环境不适用)
alter user root@localhost identified by ''
11.配置MYSQL_PS1环境变量
修改家目录下:.bash_profile文件,添加
export MYSQL_PS1="\u@\h[\d]>"
12.使新环境变量生效
source /root/.bash_profile
13.重新连接mysql验证
mysql -uroot -p
除了上述安装方式以外,可能在公司中会遇到安装指定版本的需求,那么如何安装指定版本的MySQL数据呢?这时我们可以采用下载指定版本安装包进行安装的方式,主要步骤如下,假设CentOS7 linux最小安装,已经配置好yum。首先检查是否安装numactl包
rpm -qa|grep numactl
yum install numactl-libs-* # 如果没有安装需要安装。检查是否安装libaio包
rpm -qa|grep libaio
yum install libaio-* # 如果没有安装需要安装
具体安装步骤如下:
* 禁用selinux
setenforce 0
* 上传安装文件到Linux
mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
* 创建mysql用户组和用户
groupadd -g 27 -r mysql
#-r创建系统账户,-M 不创建用户家目录 -N 不创建和用户名一样的用户组
useradd -M -N -g mysql -r -s /bin/false -c "MySQL Server" -u 27 mysql
id mysql
* 上传安装包到root家目录
* 解压二进制文件到/usr/local
tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz -C /usr/local
* 解压目录改名为mysql
cd /usr/local
ls -l
mv mysql-5.7.26-linux-glibc2.12-x86_64/ mysql
* 环境变量中添加mysql/bin目录
vi /root/.bash_profile
修改PATH=/usr/local/mysql/bin:$PATH:$HOME/bin
添加 export MYSQL_PS1="\u@\h[\d]>"
source /root/.bash_profile
* 创建/usr/local/mysql/etc/my.cnf选项文件 (也可以使用默认的/etc/my.cnf选项文件)
mkdir -p /usr/local/mysql/etc
mkdir -p /usr/local/mysql/mysql-files
* 编辑选项文件my.cnf填写默认选项
vi /usr/local/mysql/etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/data/mysql.sock
log-error=/usr/local/mysql/data/mysqld.err
pid-file=/usr/local/mysql/data/mysqld.pid
secure_file_priv=/usr/local/mysql/mysql-files
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
Explicit-defaults-for-timestamp
character-set-server=utf8
[mysql]
socket=/usr/local/mysql/data/mysql.sock
* 初始化数据目录
cd /usr/local/mysql
mkdir data
chmod 750 data
chown mysql:mysql data
* 初始化数据库
cd /usr/local/mysql
bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf --initialize
* 使用systemd管理mysql
例如:systemctl {start|stop|restart|status} mysqld
cd /usr/lib/systemd/system
touch mysqld.service
chmod 644 mysqld.service
vi mysqld.service
# 添加以下内容
[Unit]
Description=MySQL Server
Documentation=man:mysqld(7)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/usr/local/mysql/data/mysqld.pid
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf --daemonize --pid-file=/usr/local/mysql/data/mysqld.pid $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 65535
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
以上内容中注意:The --pid-file option specified in the my.cnf configuration file is ignored by systemd.
默认:LimitNOFILE = 5000,如果连接数(max_connection)需要调大,可以将LimitNOFILE 设置为最大65535
* 创建mysql.conf文件
cd /usr/lib/tmpfiles.d
#Add a configuration file for the systemd tmpfiles feature. The file is named mysql.conf and is placed in /usr/lib/tmpfiles.d.
cd /usr/lib/tmpfiles.d
touch mysql.conf
chmod 644 mysql.conf
* mysql.conf添加内容
vi mysql.conf
添加以下语句:
d /usr/local/mysql/data 0750 mysql mysql -
* 使新添加的mysqld服务开机启动
systemctl enable mysqld.service
* 手动启动mysqld
systemctl start mysqld
systemctl status mysqld
* 获得mysql临时登录密码
cat /usr/local/mysql/data/mysqld.err | grep "temporary password"
* 客户端登录连接mysql服务器
mysql -uroot -p
输入临时密码
* 修改MySQL用户root@localhost密码
mysql>alter user root@localhost identified by ''#此处为了方便设置为空密码
* 测试新密码连接MySQL服务
mysql -uroot -p
至此,我们就完成了在Linux环境下安装MySQL的任务。通过这两种方式我们可以体会到在Linux环境下安装软件的基本思路及方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)