Linux安装MySQL
mysql简介
MySQL是一种开放源码的的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言(SQL)进行数据库管理。
MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。
MySQL因为其速度、可靠性和适应性而备受关注。
说明
本文演示mysql8.0.18的离线包,在linux(centos7 64位)下的安装步骤,给大家、给自己做个参考。
本文的安装步骤,是在自己做安装练习的情况下编写,如果在生产环境下安装,请注意以下几项:
- 配置文件中,数据库文件的保存目录
- 配置文件中,mysql服务的端口、线程、超时等配置
- mysql的登录账号、密码的复杂度、保密等
- 其它
一、下载-
官网下载linux 64位的mysql8.0.18版本
https://dev.mysql.com/downloads/mysql/
二、安装mysql
上传目录、安装目录、数据文件目录,可以自定义,本文这里是“/usr/mysql/”目录,这也是软件安装目录。
1、 创建mysql目录
“mkdir /usr/mysql”
,创建mysql目录
2、上传mysql
上传mysql压缩包
3、 解压mysql
注意:mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
文件的后缀是.tar.xz
,不是.tar.gz
,所以解压命令的参数有所不同。“tar xvJf /usr/mysql/mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz -C /usr/mysql/”
,解压msyql压缩包
4、重命名mysql
“mv /usr/mysql/mysql-8.0.18-linux-glibc2.12-x86_64 /usr/mysql/mysql”
重命名文件夹
实际上可以不做,只是为了让文件夹名字短点。
5、 创建data目录
“mkdir /usr/mysql/mysql/data”
,创建mysql的数据目录,可以使用其他目录。如果是生产环境,该数据库目录请使用分区较大的目录,或者分布式文件系统的目录。
安装、运行mysql时候,一般不用root用户,因此创建mysql组和mysql用户
6、创建mysql组“groupadd mysql”
,创建mysql用户组
7、创建mysql用户
“useradd -r -g mysql mysql”
,创建mysql用户,使用-r参数表示mysql用户是一个系统用户,不能登录
8、进入mysql目录
“cd /usr/mysql/mysql”
,进入mysql目录
9、 修改拥有者用户
“chown mysql:mysql -R ./”
,修改mysql目录下的所有文件、文件夹的拥有者为mysql组的mysql用户
10、修改读写权限
“chmod -R 777 /usr/mysql/mysql”
,修改mysql文件夹、文件的读写权限
mysql安装、运行,使用的是mysql用户,需要给mysql用户对mysql目录的拥有权限、读写权限。
-
三、安装mysql
1. 安装MySQL
“/usr/mysql/mysql/bin/mysqld --initialize --user=mysql --lower-case-table-names=1 --datadir=/usr/mysql/mysql/data --basedir=/usr/mysql/mysql”
:初始化mysql
/usr/mysql/mysql/bin/mysqld
:mysql的相关安装文件目录
--user
:使用哪个用户安装mysql
--datadir
:mysql数据库的数据存放目录,
--basedir
:mysql数据库的根目录
注意最后一行,这也是和之前版本不同的地方,它给了root一个初始密码,后面要登录的时候要用到这个密码。
一定要记住最后一行的root的初始密码。
一定要记住最后一行的root的初始密码。
一定要记住最后一行的root的初始密码。
- 拷贝my.cnf
“cp /usr/mysql/mysql/support-files/my_default.cnf /etc/my.cnf”
,拷贝mysql的配置文件到etc目录
注意:support-files目录下是没有my_default.cnf这个文件的
,需要自己创建,文件中的内容如下
注意:basedir、datadir、port、socket这几个配置项
在文档中需要加一下这个,不然会报错:lower-case-table-names = 1
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[mysqld]
lower-case-table-names = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 一般配置选项
basedir = /usr/mysql/mysql
datadir = /usr/mysql/mysql/data
port = 3306
socket = /usr/mysql/mysql/mysqld.sock
character-set-server=utf8
#下面是可选项,要不要都行,如果出现启动错误,则全部注释掉,保留最基本的配置选项,然后尝试添加某些配置项后启动,检测配置项是否有误
back_log = 300
max_connections = 3000
max_connect_errors = 50
table_open_cache = 4096
max_allowed_packet = 32M
#binlog_cache_size = 4M
max_heap_table_size = 128M
read_rnd_buffer_size = 16M
sort_buffer_size = 16M
join_buffer_size = 16M
thread_cache_size = 16
# query_cache_size = 128M
# query_cache_limit = 4M
ft_min_word_len = 8
thread_stack = 512K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 128M
#log-bin=mysql-bin
long_query_time = 6
server_id=1
innodb_buffer_pool_size = 1G
innodb_thread_concurrency = 16
innodb_log_buffer_size = 16M
innodb_log_file_size = 512M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = on
[mysqldump]
quick
max_allowed_packet = 32M
[mysql]
no-auto-rehash
default-character-set=utf8
safe-updates
[myisamchk]
key_buffer = 16M
sort_buffer_size = 16M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
open-files-limit = 8192
[client]
#/bin/bash: Q: command not found
后边启动mysql服务时候,因为query_cache_size、query_cache_limit两个参数不能正常安装,因此注释掉这两个参数。各参数的意义自行查找。
3. 编辑my.cnf
可以使用linux的vi编辑器(类似window的记事本),为了省事,这里直接使用Xftp,用记事本方式,打开/etc/my.cnf,修改mysql的目录
basedir:mysql的安装目录
datadir:mysql的数据库文件目录
port:端口号
socket:客户端和服务器端,建立连接的socket文件
character-set-server:mysql的数据库编码
- 拷贝mysqld
“cp /usr/mysql/mysql/support-files/mysql.server /etc/init.d/mysqld”
,拷贝mysql的配置文件到etc目录
- 编辑mysqld
使用Xftp,用记事本方式,打开/etc/init.d/mysqld,编辑mysqld,修改mysql的目录basedir、datadir
四、启动mysql
- 启动mysql服务。
“service mysqld start”
,启动mysql服务。
这里启动出现了报错,将my.cnf
中的query_cache_size、query_cache_limit
两个配置项注释掉,即可正常启动。
通过“netstat -ntlp”查看端口、进程,可以看到端口为3306的mysql进程。
五、 停止mysql
1.停止mysql服务
“service mysqld stop”
,停止mysql服务
六、远程登录
1. 修改root密码,远程登录
`“ln -s /usr/mysql/mysql/mysqld.sock /tmp/mysql.sock”`,建立快捷连接,`“/usr/mysql/mysql/mysqld.sock”`是my.cnf中配置的“socket”的值。客户端与mysql服务器建立连接的socket文件默认好像是/tmp/mysql.sock,因此建立快捷连接。
-
停止mysql
“service mysqld stop”
,停止mysql -
mysql后台运行
“/usr/mysql/mysql/bin/mysqld_safe --skip-grant-tables &”
,安全模式重启mysql,之后输入“bg”
,使mysql后台运行。
-
登录mysql
“/usr/mysql/mysql/bin/mysql -p”
,用安装mysql时的密码,登录mysql
-
修改密码
use mysql; set SQL_SAFE_UPDATES=0; select host, user from user; update user set host = '%' where user='root'; select host, user from user; flush privileges; ALTER USER 'root'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'MyPwd@123'; flush privileges; set SQL_SAFE_UPDATES=1; exit;
- 修改密码以后,使用“service mysqld stop”关闭安全模式启动的mysql服务,再使用“service mysqld start”重新启动mysql服务,否则会影响远程连接数据库。如果不能关闭mysql服务,可以直接杀死进程,在重新启动mysql服务。
说明:
- 为了防止随意修改数据,数据库添加了SQL_SAFE_UPDATES参数,修改数据前将SQL_SAFE_UPDATES改为0,即执行sql:set SQL_SAFE_UPDATES=0;
修改密码时,总是报如下错误:
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
修改密码前,先执行“flush privileges;”,先刷新权限表,即可解决
- 修改数据之后,需要将SQL_SAFE_UPDATES参数改回去,执行sql:set SQL_SAFE_UPDATES=1;
- 新版本之后,密码要求复杂性,大小写、数字、特殊字符需要包含。
七、 centos防火墙
centos中,在防火墙中,添加3306端口,或者直接关闭防火墙,但是不建议直接关闭防火墙。
或者通过命令的方式,允许端口3306通过防火墙。
测试连接
使用navicat客户端,连接mysql服务。
八、开机自启动MySQL
“chmod +x /etc/init.d/mysqld”
,修改权限“chkconfig --add mysqld”
,把mysql注册为开机启动的服务“shutdown -r now”
,重启linux
链接:https://blog.youkuaiyun.com/zll1058098666/article/details/106524077/