服务器上安装mysql

2023-11-22 17:08

本文主要是介绍服务器上安装mysql,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载:https://blog.csdn.net/bianchengxiaoma/article/details/80800622  ,保存以便方便查找

CentOS 7 版本将MySQL数据库软件从默认的程序列表中移除,用MariaDB代替了,MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

 

方法一:通过yum来进行mysql的安装

由于我安装的CentOS7.4默认安装了MariaDB,所以我只需要启动mariadb数据库就可以正常使用mysql了

(安装mariadb:yum install mariadb-server mariadb)

systemctl start mariadb

mariadb数据库的相关命令是:
systemctl start mariadb  #启动MariaDB
systemctl stop mariadb  #停止MariaDB
systemctl restart mariadb  #重启MariaDB
systemctl enable mariadb  #设置开机启动

安装mariadb后显示的也是 MariaDB [(none)]> ,可能看起来有点不习惯

接下来我们重新安装MySQL

1、卸载mariadb

yum list installed | grep mariadb    #检查mariadb是否已安装

yum -y remove mariadb*    #全部卸载

2、下载并安装mysql的YUM源

下载mysql的YUM源:wget -P /home/lisonglin http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm(wget命令:http://man.linuxde.net/wget)

由于我们是下载到/home/lisonglin目录下,所以先切换到该目录下:cd /home/lisonglin

安装mysql的YUM源:rpm -ivh mysql57-community-release-el7-11.noarch.rpm

检查mysql的YUM源是否安装成功:yum repolist enabled | grep "mysql.*-community.*" 

看到上图所示表示安装成功

选择要启用的mysql版本

查看mysql版本,执行:yum repolist all | grep mysql

可以看到 5.5, 5.6,8.0 版本是默认禁用的

可以通过类似下面的语句来启动或禁用某些版本

yum-config-manager --enable mysql57-community

yum-config-manager --disable mysql56-community

或者通过修改vim /etc/yum.repos.d/mysql-community.repo文件,改变默认安装的mysql版本。比如要安装5.6版本,将5.7源的enabled=1改成enabled=0,然后再将5.6源的enabled=0改成enabled=1即可。

注意: 任何时候,只能启用一个版本。

查看当前的启用的 MySQL 版本:yum repolist enabled | grep mysql

3、安装MySQL

yum install mysql-community-server

安装过程中一直输入"y"就可以了,当出现下面的结果时,就代表mysql数据库安装成功了

4、测试

启动mysql服务:systemctl start mysqld

登录进Mysql(我的刚安装完时没有密码):mysql -uroot或mysql

如果出现错误:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

则说明mysql安装完后给root用户生成了一个默认密码,所以你需要使用密码登录。

mysql -uroot -p 回车 然后输入默认密码即可登录myql。

关于如何查看默认密码,可以参考:CentOS7.4中安装了Mysql5.7之后如何查看默认密码

可能用到的命令:

systemctl start mysqld    #启动mysqld

systemctl stop mysqld    #停止mysqld

systemctl restart mysqld    #重启mysqld

systemctl enable mysqld   #设置开机启动

systemctl status mysqld    #查看 MySQL Server 状态

5、mysql相关配置

设置密码

mysqladmin -u root password 'new-password'

或set password for 'root'@'localhost' = password('123456');

设置完密码之后就可以使用mysql -u root -p 命令来登录我们的mysql数据库了

 

防火墙设置

远程访问 MySQL, 需开放默认端口号 3306.

firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --permanent --zone=public --add-port=3306/udp

执行firewall-cmd --reload使最新的防火墙设置规则生效

 

远程访问设置

创建一个普通用户 sa ,密码是123456
CREATE USER 'sa'@'%' IDENTIFIED BY '123456'; 
给这个用户授予 SELECT,INSERT,UPDATE,DELETE 的远程访问的权限,这个账号一般用于提供给实施的系统访问 
GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'sa'@'%'; 
创建一个管理员用户 admin 账号 ,密码是 123456 
CREATE USER 'admin'@'%' IDENTIFIED BY '123456'; 
给这个用户授予所有的远程访问的权限。这个用户主要用于管理整个数据库、备份、还原等操作。 
GRANT ALL PRIVILEGES  ON *.* TO 'admin'@'%'; 

设置用户 root 可以在任意 IP 下被访问:
grant all privileges on *.* to root@"%" identified by "新密码";
设置用户 root 可以在本地被访问:
grant all privileges on *.* to root@"localhost" identified by "新密码";

使授权立刻生效 
flush privileges;

 

设置字符集

一般的,为了支持中文,我们应该将字符集设为 UTF-8, 执行SHOW VARIABLES LIKE 'character%';

查看当前 MySQL 字符集

可以看到默认服务器的字符器是 latin1 ,对中文不友好。修改 /etc/my.cnf 文件,添加字符集的设置

 

[mysql]

default-character-set = utf8

[mysqld]

character_set_server = utf8

重启 MySQL ,可以看到字符集已经修改了

其他常用配置:

[plain] view plain copy

[mysqld]  
basedir      = path          # 使用给定目录作为根目录(安装目录)。  
datadir      = path          # 从给定目录读取数据库文件。  
pid-file     = filename      # 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统);  
  
  
socket = /tmp/mysql.sock     # 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(Linux下默认是/var/lib/mysql/mysql.sock文件)  
port             = 3306      # 指定MsSQL侦听的端口  
key_buffer       = 384M      # key_buffer是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写)。  
                               索引块是缓冲的并且被所有的线程共享,key_buffer的大小视内存大小而定。  
table_cache      = 512       # 为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量。可以避免频繁的打开数据表产生的开销  
sort_buffer_size = 2M        # 每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。  
                               注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100×6=600MB  
read_buffer_size = 2M        # 读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。  
query_cache_size = 32M       # 指定MySQL查询结果缓冲区的大小  
read_rnd_buffer_size    = 8M # 改参数在使用行指针排序之后,随机读用的。  
myisam_sort_buffer_size =64M # MyISAM表发生变化时重新排序所需的缓冲  
thread_concurrency      = 8 # 最大并发线程数,取值为服务器逻辑CPU数量×2,如果CPU支持H.T超线程,再×2  
thread_cache            = 8 # #缓存可重用的线程数  
skip-locking                 # 避免MySQL的外部锁定,减少出错几率增强稳定性。  
[mysqldump]  
max_allowed_packet      =16M # 服务器和客户端之间最大能发送的可能信息包  
  
[myisamchk]  
key_buffer   = 256M  
sort_buffer = 256M  
read_buffer = 2M  
write_buffer = 2M  
 

其他可选参数:
back_log = 384
指定MySQL可能的连接数量。 当MySQL主线程在很短时间内接收到非常多的连接请求,该参数生效,主线程花费很短时间检查连接并且启动一个新线程。 back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。 如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。 试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。

max_connections = n
MySQL服务器同时处理的数据库连接的最大数量(默认设置是100)。超过限制后会报 Too many connections 错误

key_buffer_size = n
用来存放索引区块的RMA值(默认设置是8M),增加它可得到更好处理的索引(对所有读和多重写)

record_buffer:
这里写代码片 每个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区。 如果你做很多顺序扫描,你可能想要增加该值。默认数值是131072(128K)

wait_timeout:
服务器在关闭它之前在一个连接上等待行动的秒数。

interactive_timeout:
服务器在关闭它前在一个交互连接上等待行动的秒数。 一个交互的客户被定义为对 mysql_real_connect()使用 CLIENT_INTERACTIVE 选项的客户。 默认数值是28800,可以把它改为3600。

skip-name-resolve
禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。 但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求!

log-slow-queries = slow.log
记录慢查询,然后对慢查询一一优化

skip-innodb
skip-bdb
关闭不需要的表类型,如果你需要,就不要加上这个

备份、还原
方法1:命令行 
备份 
mysqldump --socket=/var/lib/mysql/mysql.sock --single-transaction=TRUE -u root -p mysql> Solin.sql 
还原 
mysql --socket=/var/lib/mysql/mysql.sock -u root -p mysql< Solin.sql

 

 

 

参考:

https://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html

https://www.cnblogs.com/TeiSi/p/6560282.html

http://blog.csdn.net/whatlookingfor/article/details/52382472

http://www.linuxidc.com/Linux/2016-06/132676.htm


 

这篇关于服务器上安装mysql的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/411616

相关文章

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

[MySQL表的增删改查-进阶]

🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 💻💻💻数据库约束 🔭🔭🔭约束类型 not null: 指示某列不能存储 NULL 值unique: 保证某列的每行必须有唯一的值default: 规定没有给列赋值时的默认值.primary key:

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就

Java 连接Sql sever 2008

Java 连接Sql sever 2008 /Sql sever 2008 R2 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class TestJDBC

Mysql BLOB类型介绍

BLOB类型的字段用于存储二进制数据 在MySQL中,BLOB类型,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储的大小不同。 TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G