- 1.添加用户组
groupadd mysql
-
2.创建一个不用登陆的用户
useradd -s /sbin/nologin -g mysql mysql
-
3.创建文件夹
mkdir /usr/local/mysql
mkdir /usr/local/mysql/data
-
4.上传tar包
rz
注意:有些系统rz 无效。需执行命令 (安装上传,下载)
yum -y install lrzsz
如果上传到其他地方需要复制
copy #cp /mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz /usr/local/mysql
-
5.解压
tar -zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
-
6 重命名
mv mysql-5.7.21-linux-glibc2.12-x86_64 mysql5.7
-
7目录权限设置
chown -R mysql:mysql /usr/local/mysql/
-
8 查看是否设置成功看到文件的所有者和组都变成了mysql
ll
-
9修改my.cnf 文件(i进入编辑模式退出Esc+:+wq)(需要用有修改权限的用户)
命令:
vi /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql/mysql5.7/ #软件安装位置
datadir=/usr/local/mysql/data #软件数据存储位置
socket=/var/lib/mysql/mysql.sock
#socket=/tmp/mysql.sock
#skip-grant-tables
user=mysql
#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/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
#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
-
10初始化数据
进入mysql安装目录
cd /usr/local/mysql/mysql5.7
执行:
bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --secure-file-priv=/root/ --initialize
这个时候最好记住一个 密码 用来第一次登陆mysql的密码 例如:TZ5N%rVjdF
-
11启动mysql
现在安装位置的bin目录下启动程序
执行命令 service mysql start
我安装了几次每次都会报错,如果你运气好的话可能不会遇到。
Starting MySQL.Logging to '/usr/local/mysql/data/iZ2ze8hspx8qsmxx7b1i9sZ.err'.
170728 09:47:55 mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists.
ERROR! The server quit without updating PID file (/usr/local/mysql/data/iZ2ze8hspx8qsmxx7b1i9sZ.pid).
第一:
“var/lib/mysql”目录不存在,首要先创建:
mkdir /var/lib/mysql
第二:
Mysql客户端和服务器端是通过初始化mysql.sock 文件来进行通信,所以服务器在启动时需要写入该文件,因此该文件所存放的目录必须双方都
具有访问权限。而异常日志中表示:
[ERROR] Can't start server : Bind on unix socket: Permission denied
所以,MySQL服务不具备目录 /var/lib/mysql 的写入权限,无法生成mysql.sock文件,自然服务启动时无法找到该文件。
给目录 /var/lib/mysql 付予写入权限或者最大权限—chmod 777 /var/lib/mysql
这个问题就可以解决。
运气太背的估计还会遇到其他的问题比如
使用mysql -uroot -p登录出现找不到 /var/lib/mysql/mysql.sock问题。
解决办法
1.大多数mysql都是rpm方式安装的。它会自动寻找/var/lib/mysql/mysql.sock这个文件。
检查mysql.sock的位置。 通过/etc/my.cnf中的socket的字段。 如果socket如下所示:
socket=/tmp/mysql.sock
2.为mysql.sock增加软连接(相当于windows中的快捷方式)。比如实际的mysql.sock在/tmp/下。
则运行如下命令。
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
说明:In [参数][源文件或目录][目标文件或目录]
- 12. 登陆数据库
mysql -u root -p
需要填写密码(这时估计有的人忘记了密码是什么了)
不过没关系也是有解决办法的
进入到my.cnf文件,添加免密登陆(注意需要添加到[mysqld]下面)
vi /etc/my.cnf
[mysqld]
skip-grant-tables
然后修改root密码。 将 root 密码修改为 'root
flush privileges;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
然后在此修改配置的文件取消免密登陆
到此大多数人认为Linux下的mysql 安装 基本完成。
这时候你就会用工具对数据进行连接你会发现连不上。
1.检查防火墙
#查看防火墙状态
firewall-cmd --state
#停止firewall
systemctl stop firewalld.service
#禁止firewall开机启动
systemctl disable firewalld.service
2.建立远程用户
原因:
如果只有root@'localhost'这个用户意味着这个用户只能从本地进行连接,无法远程连接,
如果只有root@'%';这个用户则意味着这个用户只能从远程连接,无法从本地连接。
所以如果本地连接和远程连接都需要的话则需要创建者两个用户。
#远程用户建立
grant all privileges on *.* to 'root'@'%' identified by '123456';
- 13.设置开机启动
1、将服务文件拷贝到init.d下,并重命名为mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
2、赋予可执行权限
chmod +x /etc/init.d/mysqld
3、添加服务
chkconfig --add mysqld
4、显示服务列表
chkconfig --list
如果看到mysql的服务,并且3,4,5都是on的话则成功,如果是off,则键入
chkconfig --level 345 mysqld on
5、重启电脑
reboot
6、验证
ps -ef|grep mysql
如果看到有监听说明服务启动了
- 14.解决 -bash: mysql: command not found
-
root@DB-02 ~]# mysql -u root
-bash: mysql: command not found原因:这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。
首先得知道mysql命令或mysqladmin命令的完整路径,比如mysql的路径是:/usr/local/mysql/bin/mysql,我们则可以这样执行命令:# ln -s /usr/local/mysql/bin/mysql /usr/bin