Cenots8 安装mysql

安装mysql

前言

在工作中,我们可能用到的数据库是sqlserver或oracle这种庞大的数据库。但是,当我们在学习的时候,大多情况都会选择安装mysql,因为它体积更小,开源,安装简单,且功能也比较强大。下面,我将在虚拟机中CentOS 8中安装mysql(解压版,安装快速;yum源安装要下载太慢)。

注意:第一次使用centos安装mysql时,可以考虑严格按照教程进行安装,避免出错。等自己熟练了可以将其卸载,然后再安装到自己想要的目录中去。

安装前先卸载 mysql :卸载mysql,删除mysql相关文件

第一步 下载MySQL

第一种使用网盘下载:mysql-8.0.19-linux-glibc2.12-x86_64.tar 提取码: zw9y

第二种使用官网下载地址下载:mysql官网下载地址
在这里插入图片描述
将下载好的mysql上传至服务器

第二步 解压,创建文件夹

#1.解压tar
[root@localhost: ~]#tar xvf mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz

#2.复制解压后的文件到/usr/local/mysql
[root@localhost: ~]#cp mysql-8.0.19-linux-glibc2.12-x86_64 /usr/local/mysql -r

#3.在mysql目录下,创建文件夹
[root@localhost: ~]#cd /usr/local/mysql
[root@localhost: mysql]#mkdir -p {data,binlogs,log,etc,run}

修改配置文件

[root@localhost: mysql]#vim ./etc/my.cnf

my.cnf的文件内容

[client]
port = 3306
socket = /usr/local/mysql/run/mysql.sock
 
[mysqld]
port = 3306
socket = /usr/local/mysql/run/mysql.sock
pid_file = /usr/local/mysql/run/mysql.pid
datadir = /usr/local/mysql/data
default_storage_engine = InnoDB
max_allowed_packet = 512M
max_connections = 2048
open_files_limit = 65535
 
skip-name-resolve
lower_case_table_names=1
 
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
 
 
innodb_buffer_pool_size = 1024M
innodb_log_file_size = 2048M
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 0
 
 
key_buffer_size = 64M
 
log-error = /usr/local/mysql/log/mysql_error.log
log-bin = /usr/local/mysql/binlogs/mysql-bin
slow_query_log = 1
slow_query_log_file = /usr/local/mysql/log/mysql_slow_query.log
long_query_time = 5
 
 
tmp_table_size = 32M
max_heap_table_size = 32M
#query_cache_type = 0
#query_cache_size = 0
 
server-id=1

如果文件目录不是这样的可以使用vim的批量替换命令进行替换:

:%s/源字符串/目的字符串/g
例如本例(这里的路径反斜杠需要转义):
:%s/\/usr\/local\/mysql/\/apps\/mysql-8.0.20-linux-glibc2.12-x86_64/g

创建mysql用户和组,修改mysql目录的权限

#1.创建mysql系统用户
[root@localhost: mysql]#useradd -r mysql -s  /sbin/nologin

#2.检查mysql用户和组是否创建成功
[root@localhost: mysql]#getent passwd
[root@localhost: mysql]#getent group

#3.修改mysql目录权限
[root@localhost: mysql]#chown -R mysql:mysql /usr/local/mysql

初始化mysql

#这是我在centos8上初始化完后,没有任何提示
[root@localhost: mysql]#bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

#下面是我在centos7上初始化后,紧接着就提示了mysql的密码。记住密码(vg9I179(r?:v)
# 2020/4/6记录: my.cnf配置出错了才会打印出来
[root@centos7: mysql]#bin/mysqld --initialize --user=mysql --basedir=/apps/mysql --datadir=/apps/mysql/data
2020-04-06T04:38:36.830415Z 0 [System] [MY-013169] [Server] /apps/mysql/bin/mysqld (mysqld 8.0.19) initializing of server in progress as process 13184
2020-04-06T04:38:39.591135Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: vg9I179(r?:v

查看mysql的密码

# centos8 这里密码就是 M?Vi%Yxgj2ih
[root@localhost: mysql]#cat log/mysql_error.log | grep password
2020-04-05T03:35:56.147361Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: M?Vi%Yxgj2ih

做成服务


[root@localhost: mysql]#cp support-files/mysql.server /etc/init.d/mysql
[root@localhost: init.d]#chkconfig --add mysql
[root@localhost: init.d]#chkconfig --list

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

# 添加mysql到环境变量中,并让其立即生效
[root@localhost: mysql]#echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@localhost: mysql]#. /etc/profile

启动服务

# start:启动;status:查看服务状态;stop:暂停服务;restart:重启
systemctl start mysql
systemctl status mysql

登录(如果有错误,根据报错信息解决问题)

#库文件夹丢失
[root@localhost: mysql]#mysql -uroot -p
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

# 查看二进制程序所依赖的库文件
[root@localhost: mysql]#cd bin
# 有not fount就表示丢失了库文件需要下载
[root@localhost: bin]#ldd mysql
	...省略掉有库文件的输出
	libtinfo.so.5 =>  not found
	...省略掉有库文件的输出
# 使用find命令查看系统内有没有这个库文件
[root@localhost: bin]#find / -name libtinfo.so.5
# 如果有就将这个文件路径复制出来,然后使用ldconfig /usr/lib/libtinfo.so.5

如果操作系统上没有这个库文件就下载:
下载 libtinfo.so.5:百度云:c8bk
将文件拷贝到服务器的 /usr/lib/ 下

[root@localhost: bin]#cd /usr/lib
# 上传库文件libtinfo.so.5
[root@localhost: lib]#rz
[root@localhost: lib]#cd /usr/local/mysql/bin
[root@localhost: bin]#ldconfig /usr/lib/libtinfo.so.5
[root@localhost: bin]#ldconfig
# 查看libtinfo.so.5是否有内容
[root@localhost: bin]#ldd mysql

登录报错:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/usr/local/mysql/run/mysql.sock' (2)

解决办法:转载别人的博客

登录修改mysql的密码

#查看MySQL是否启动
[root@localhost: bin]#systemctl status mysql
[root@localhost: bin]#systemctl start mysql
[root@localhost: bin]#mysql -uroot -p
#修改密码为123456
mysql> alter user 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
# 退出重试登陆密码
mysql> exit

总结

2020/4/6,我将mysql的安装目录改成了/apps/mysql下,并且也相应的修改了my.cnf的内容,初始化时也修改了目录。但是在初始化时有提示信息,密码也打印在终端了,然后我继续安装。最后发现登录不了,并且报错:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)
使用 find / -name mysqld.sock 找不到该文件。然后我重新使用该文档上面的默认安装了一遍,发现可以正常使用,正常登录。所以在这里判断是my.cnf文件配置错了,后面有时间会详细了解下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章