首先下载mysql
MySql
选择Linux - Generic (glibc 2.12) (x86, 64-bit), Compressed TAR Archive下载即可
我这里下载的是mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz 刚才上官网看了下,最新的变成8了,这个安装方式是否与5.7相同我就不清楚了(捂脸)
1.把下载完的文件上传到linux服务器,开始解压。
tar -xvzf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
1
2.解压改下名字,方便后续操作。我这里命名为mysql。
mv mysql-5.7.22-linux-glibc2.12-x86_64 mysql
1
3.新建用户组合用户。
有可能出现该用户组和用户已经存在,这里是删除原先用户组/用户还是修改新建用户组/用户名都看你喜欢怎么弄了。
groupadd mysql
useradd -r -g mysql mysql
1
2
4.修改mysql根目录用户权限
进入刚才重命名后的mysql文件夹执行修改权限命令
cd mysql
chown -R mysql .
chgrp -R mysql .
或者
cd mysql
chown -R mysql:mysql ./
1
2
3
4
5
6
5.初始化 MySQL 配置表
这里会有一个不同点
5.6及以下版本使用的是
./scripts/mysql_install_db --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data
//user刚才新建的用户名,scripts在mysql目录下
1
2
5.7以上改了,如果还是使用上面那个就会提示让你用--initialize命令
./bin/mysqld --initialize --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data
1
从命令中我们可以知道配置时还需要在mysql目录下存在一个data文件夹,但是5.7没有提供这个文件夹,所以我们需要自己在mysql根目录新建一个data文件夹。
否则会报如下提示:
[WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
[ERROR] The data directory needs to be specified.
1
2
data新建完毕后就可以开始初始化了
./bin/mysqld --initialize --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data
1
初始化完毕后在命令行最后会提供生成好的随机密码,先拷贝下来。
新建完后修改权限
这时候直接初始化会报如下错误
error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
是因为没有安装libaio.so.1
运行安装yum install libaio,中间会让你同意下,输入 y 回车即可
继续初始化
可以看到最后一行有提供随机密码,记录下来,我这里是scXcgee)k9jn
然后修改下权限,把除了data外的所有mysql文件的权限都设置为root
chown -R root .
chown -R mysql data
1
2
6.复制配置文件 my-default.cnf
将该文件复制到/etc下,并改名。
cp support-files/my-default.cnf /etc/my.cnf
1
这里有一点很重要,就是tmp文件。
首先,如果你的support-files文件夹下存在my-default.cnf文件,那么打开看下socket项所指的tmp文件是否存在,如果不存在,则新建,否则会报错。
如果不存在,很有意思的是我安装时不存在该文件(捂脸)。
没办法,既然没有提供,那只能自己建了,然后我发现再etc下已经有一个my.cnf了_(:з」∠*)_。
这是内容
[mysqld]
datadir=/var/lib/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/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
很明显,这是默认配置,而我是把mysql装在了home目录中,所以需要修改配置。
附上我的配置文件my.cnf。
basedir就是mysql根目录
datadir就是上面在mysql根目录中新建的data文件夹
socket我在mysql根目录中新建了一个tmp文件夹,然后这里就指向了她,mysql.sock这个文件在我们启动mysql时会自动创建。所以我们只要新建tmp文件夹就行了。
修改下权限
然后最重要的一点来了:如果你的socket指向的地址不在tmp中(linux服务器根目录中的tmp文件夹)(我指向的地址是/home/mysql/tmp,不在tmp中,要加上client)请在my.cnf中加上[client] socket=/home/mysql/tmp/mysql.sock项,否在在登入时会报错误,就是这个错误让我折腾了好久好久(捂脸)。
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket
‘/tmp/mysql.sock’ (2)
[mysqld]
basedir=/home/mysql
datadir=/home/mysql/data
socket=/home/mysql/tmp/mysql.sock
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
socket=/home/mysql/tmp/mysql.sock
[mysqld_safe]
#log-error=/var/log/mariadb/mariadb.log
#pid-file=/var/run/mariadb/mariadb.pid
basedir=/home/mysql
datadir=/home/mysql/data
socket=/home/mysql/tmp/mysql.sock
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
7.启动和关闭mysql
#/etc/init.d/mysql start 或者 serivce mysql start 或者 ./bin/mysqld_safe&
#/etc/init.d/mysql stop 或者 service mysql stop 或者 ./bin/mysqladmin -u root -p shutdown
1
2
我一般使用./bin/mysqld_safe&命令启动mysql服务
启动后检查下ps -ef|grep mysql检查下是否启动
现在没有启动
启动
输入bg 后台运行,然后再运行ps -ef|grep mysql检查可以看到mysql已经启动了
7.连接mysql
./bin/mysql -uroot -p
1
提示输入密码,输入刚才记下随机密码 ,要手动输入,不能黏贴哦
连接成功。
8.修改密码
刚才的密码只是初始自动生成的随机密码,我们在之后如果想要使用mysql的话还需要中心设置下密码,不然连远程访问都干不了,这里修改的是root的密码
9.开启远程访问
mysql> use mysql;
Database changed
mysql> update user set host='%' where user='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select host,user from user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+---------------+
3 rows in set (0.00 sec)
mysql>
然后退出mysql连接
重启生效
/etc/init.d/mysqld restart
这个命令不能用的话,使用
find / -name mysql.server,找到后 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/ mv /etc/init.d/mysql.server mysqld
[root@Test init.d]# /etc/init.d/mysqld restart
Shutting down MySQL..2019-04-17T15:53:42.196643Z mysqld_safe mysqld from pid file /usr/local/mysql/data/Test.pid ended
[ OK ]
Starting MySQL. [ OK ]
[1]+ Done ./mysqld_safe (wd: /usr/local/mysql/bin)
(wd now: /etc/init.d)
或者
进入mysql安装根目录
./bin/mysqladmin -u root -p shutdown
输入密码关闭
然后再启动
./bin/mysqld_safe&
,实在关不掉就用kill命令吧,把mysql保护线程和mysql线程杀掉就OK了,然后再启动
∠( ᐛ 」∠)_。
尝试远程连接,OK,大功告成。
碰到的问题
错误1:
[root@dbserver ~]# su - mysql
Last login: Thu Aug 31 17:20:03 CST 2017 on pts/1
su: warning: cannot change directory to /home/mysql: No such file or directory
-bash-4.2$ exit
登出
解决方法
[root@dbserver ~]# cd home
-bash: cd: home: No such file or directory
[root@dbserver ~]# cd /home
[root@dbserver home]# ls
oracle xiniu
[root@dbserver home]# mkdir /home/mysql
[root@dbserver home]# chmod 755 /home/mysql
[root@dbserver home]# ls
mysql oracle xiniu
[root@dbserver home]# cp -a /etc/skel/. /home/mysql/
[root@dbserver home]# su - mysql
Last login: Thu Aug 31 17:20:58 CST 2017 on pts/1
[mysql@dbserver ~]$ id
uid=987(mysql) gid=1003(mysql) 组=1003(mysql) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[mysql@dbserver ~]$ su - root
密码:
su: 鉴定故障
[mysql@dbserver ~]$ su - root
密码:
上一次登录:四 8月 31 17:20:52 CST 2017从 196.160.1.31pts/1 上
最后一次失败的登录:四 8月 31 17:26:05 CST 2017pts/1 上
最有一次成功登录后有 1 次失败的登录尝试。
[root@dbserver ~]# chown mysql:oinstall /home/mysql/ -R
[root@dbserver ~]#
错误2:
Can't find error-message file '/home/mysql/share/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.
解决办法:
将安装包里面的/usr/local/mysql/mysql-5.7.25-linux-glibc2.12-x86_64/share/english/errmsg.sys复制到/home/mysql/share/errmsg.sys