CentOS7下安装Mysql和Memcached 以及 使用C#操作Mysql和Memcached
我本身是学.net的,但是现在很多主流SQL和NOSQL都是部置在linux下,本着好学的精神,前段时间装了个虚拟机,在其装上CentOS64位的服务器系统,对于英文0基础,linux0基础的我来说,过程是相当痛苦的,这里我就不分享了。下面分享一下在这个系统下安装Mysql和Memcached的过程。
安装Mysql
1.Centos 7 默认已不支持mysql ,而是带有MariaDB数据库管理系统(MySQL的一个分支),若要装mysql,最好先将MariaDB卸载
rpm -qa | grep mariadb #找出所有mariadb 相关的包
rpm -e –nodeps [...] #[...]代表前面命令找出的包,有几个删几个
2. 下载mysql的repo源
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
3. 安装mysql-community-release-el7-5.noarch.rpm包
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
4. 安装mysql
sudo yum install mysql-server
5.不用密码直接登录mysql,这时mysql服务必须关闭状态
mysqld_safe –user=mysql –skip-grant-tables –skip-networking & mysql -u root mysql
6.进入mysql初始化root密码
update user set password=password('...') where user='root'; # ...代表要设置的密码
flush privileges; #刷新设置
exit; #退出mysql
7.重启mysql服务并用刚才设置的密码登陆
service mysqld restart #重启服务mysql -u root -p
passwrod: #登陆mysql
show databases; #显示所有数据库
8.设置mysql远程访问权限
grant all PRIVILEGES on *.* to root@'%' identified by '[...]'; # '%'代表不限制ip,若要限制可指定具体ip, [...]为密码
flush privileges; #刷新设置
exit; #退出mysql
9.开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#命令含义:
--zone #作用域
--add-port=3306/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
10.重启防火墙
firewall-cmd --reload
完成,如果上面都没有问题的话,在windows中,以管理员运行cmd,输入mysql -h[ip] -u[uname] -p[pwd]回车,应该 可以进入mysql客户端操作mysql了。比如我的mysql -h192.168.0.103 -uted -p150 好吧,我在第8步是这样设置的:grant all PRIVILEGES on *.* to ted@'%' identified by '150'; 只要我的虚拟机开着linux,你也可以进来搞的。

如果说你到这步还出现1045错误的话,那你就试试通过root进入mysql,在mysql库中,先查看一下user表中的user,host,password字段,看看有没有你在第8步中的设置
use mysq;
select user,host,password from user;

如果没有直接设置一下user表,开通权限。就是一般的sql插入命令,具体命令应该是
use mysql;
update set host='%' ,user='root',password=password('123') from user;
host代表ip限制,user访问的名称,还有密码。
至此在linux下安装mysql服务端并设置开机启动,开启端口全部搞定。
对了,以前装了一个windos下的mysql的,现在我把它全部删了,只保留了一个可视化的管理工具,用它也可以连接的


安装Memcached
有了上面的基础,安装mem快多了,我就不排格式了啊
1.安装memcached
yum clean all
yum -y update
yum -y install memcached
2.查看或修改memcached配置
vim /etc/sysconfig/memcached
默认文件如下
PORT="11211″ #端口
USER="memcached" #用户
MAXCONN="1024″ #最大内存
CACHESIZE="64″ #缓存大小
OPTIONS="" #其它可选设置
3.找到memcached安装位置,设置启动参数
whereis memcached #找出安装位置
memcached: /usr/bin/memcached /usr/share/man/man1/memcached.1.gz
/usr/bin/memcached -d -u root -m 512 -p 11211 #设置启动参数
启动参数说明:
-d 选项是启动一个守护进程。
-u root 表示启动memcached的用户为root。
-m 是分配给Memcache使用的内存数量,单位是MB,默认64MB。
-p 是设置Memcache的TCP监听的端口,默认为11211
4.启动和查看状态
systemctl restart memcached #重启
systemctl start memcached #启动
systemctl enable memcached #开机启动
systemctl status memcached #状态
systemctl stop memcached #关闭
5.开放11211端口
firewall-cmd --zone=public --add-port=11211/tcp --permanent
#命令含义:
--zone #作用域
--add-port=11211/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
6.重启防火墙
firewall-cmd --reload
同样上面的操作完成后,在windows中,打开telnet客户端,进入cmd也可以连接操作mem 还是我的ip为例,输入telnet 192.168.0.103 11211回车,关于mem的命令我这里就不说了,后面主要说一说简单的c#操作mysql和mem

回车后,只要是黑呼呼的片,就说明你已经进入mem客户端了,可以操作mem命令,通常第一个命令是看不见的哦

至此在linux下安装memcached服务端并设置开机启动,开启端口全部搞定。
当然了,我不懂linux,配置都是最基本的,没有任何的安全措施,这些也只是搞搞玩的,必竟我的OADemo也是要用到NoSql的。了解一下也不错
EF6 codefirst操作Mysql 并在.net中使用memcached缓存
这里就搞个最基本的操作,用codefirst建一个表,插入几个数据,并试试用缓存,在缓存中读数据,具体使用以后会在OADemo中用到
建个控制台,nugit 控制台下install-package mysql.data.entity & install-package entityframework & insatll-package enyimmemcached
先建一个Model类,注意要用到memcached操作实体类,这个类要标记为[Serializable]
代码实在太简单,直接贴出来了,有注释
using Enyim.Caching;
using Enyim.Caching.Memcached;
using MySql.Data.Entity;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
namespace EFForMysql
{
class Program
{
static void Main(string[] args)
{
MemcachedClient client = new MemcachedClient();//根据配置文件实例化一个mem客户端
using(var db=new TestContext())
{
db.Database.CreateIfNotExists();//如果数据库不存在创建数据库
db.Users.Add(, Email = "tom@tom.com" });
db.Users.Add(, Email = "jim@tom.com" });//插入两条数据
)
{
Console.WriteLine("ok");//看看是否插入成功
}
var list = db.Users.ToList();//获取数据
list.ForEach(o => client.Store(StoreMode.Add, o.Name, o));//将数据写入memcached缓存
}
User tom = client.Get("tom") as User;//取一条数据
Console.WriteLine(tom.Email);
List<string> names = new List<string> { "tom", "jim" };
IDictionary<string, object> dic = client.Get(names);//一次访问获取多条数据
foreach(var item in dic)
{
User u = item.Value as User;
Console.WriteLine(u.Email);
}
Console.ReadKey();
}
}
[DbConfigurationType(typeof(MySqlEFConfiguration))]//标记数据操作使用mysql配置类型
public class TestContext:DbContext
{
public TestContext() : base("TestContext") { }
public DbSet<User> Users { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>().MapToStoredProcedures();
}
}
[Serializable]
public class User
{
public string Name { get; set; }
public int Id { get; set; }
public int Age { get; set; }
public string Email { get; set; }
}
}
配置文件也很简单,关健部分有中文注释,主要就是配置mem节点,服务地址和过期时间之类的,另外还有mysql的连接字符串
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!--配置enyim.com(memcached)节点-->
<sectionGroup name="enyim.com">
<section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
</startup>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
</provider></providers>
</entityFramework>
<!--配置Mysql连接字符串-->
<connectionStrings>
<add name="TestContext" providerName="MySql.Data.MySqlClient"
connectionString="server=192.168.0.103;port=3306;database=TestContext;uid=ted;password=150"/>
</connectionStrings>
<!--memcached相关配置及服务地址-->
<enyim.com protocol="Binary">
<memcached>
<servers>
<!--有多服务器时,可相同方式进行多配置-->
<add address=" />
</servers>
<socketPool minPoolSize=" connectionTimeout="00:00:10" deadTimeout="00:02:00" />
</memcached>
</enyim.com>
</configuration>
当运行完第一次没问题后,把EF部分的代码全注释掉,可以直接从缓存取数据


CentOS7下安装Mysql和Memcached 以及 使用C#操作Mysql和Memcached的更多相关文章
- CentOS7下安装MySQL并配置远程连接
一.CentOS7下安装MySQL数据库 CentOS7默认的安装包里面已经没有 MySQL-Server安装包了,远程镜像中也没有了. 默认的是MariaDB (MySQL的一个分支,开发这个分支的 ...
- centos7下安装php+memcached简单记录
1)centos7下安装php 需要再添加一个yum源来安装php-fpm,可以使用webtatic(这个yum源对国内网络来说恐怕有些慢,当然你也可以选择其它的yum源) [root@nextclo ...
- centos7 下安装rpm的mysql 5.7
在centos7下安装mysql5.7 一:下载mysql 去官网上去下载:这里我下载的二进制格式的 https://dev.mysql.com/downloads/mysql/ 去下载对应平台的my ...
- centos7下安装指定版本mysql5.7.23
现在mysql版本已经到MySQL 8.0(GA)稳定版本了,所以需求是想简单又快速在centos7下安装指定版本例如MySQL 5.7(GA)版本有下面这种方法 首先需要到mysql官网这里下载对应 ...
- MariaDB Centos7 下安装MariaDB
Centos7 下安装MariaDB by:授客 QQ:1033553122 1.下载安装文件 rpm包为例,对于标准服务器安装,至少需要下载client,shared,serve文件(安装时如果少了 ...
- Centos7下安装Seafile实现私有网盘
Seafile是一个开源.专业.可靠的云存储平台:解决文件集中存储.共享和跨平台访问等问题,由北京海文互知网络有限公司开发,发布于2012年10月:除了一般网盘所提供的云存储以及共享功能外,Seafi ...
- Centos7 下安装以及使用mssql
Centos7下安装以及使用Mssql,在这下面玩,主要是发现linux环境下的mysql非常的小,小到只有169M,这在windows上面,动撤几个G的安装文件,会让你直接打消使用MSSQL的勇气, ...
- CentOS7 下 安装 supervisor以及使用
CentOS7 下 安装 supervisor 以及使用 手动安装 [注] linux环境必须安装 python 1.获取supervisor包:[https://pypi.python.org/py ...
- Linux CentOs7 下安装 redis
Linux CentOs7 下安装 redis 请将以下命令放入linux命令行中运行 如果安装过程前没有安装GCC请先安装 命令如下 $ yum install gcc-c++ $ wget ht ...
- Centos7下安装配置Redsocks
Redsocks是一个开源的网络程序,代码依赖开源的libevent网络库.Redsocks允许你将所有TCP连接重定向到SOCKS或HTTPS代理,比如Shadowsocks(Centos7下安装配 ...
随机推荐
- 使用Eclipse构建Maven项目 (step-by-step)
Maven这个个项目管理和构建自动化工具,越来越多的开发人员使用它来管理项目中的jar包.本文仅对Eclipse中如何安装.配置和使用Maven进行了介绍.完全step by step. 如果觉得本文 ...
- javamail 收邮件并解析附件
package com.zz.mail; import java.io.*; import java.text.*; import java.util.*; import javax.mail.*; ...
- Java横向、纵向合并图片
进行图片对比时候想把两张有差异的图片放到一起,方便人工查看下,在网上搜了一些,有纵向合并的. 将纵向合并的自己调整了下,源码如下: import java.io.File; import java.a ...
- 李洪强iOS经典面试题126
1.#import和#include的区别,@class代表什么? @class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import 而#import比起#inc ...
- 修改apache的默认访问目录
在我们新安装好apache后,我们如果输入我们的ip地址,我们访问到的是apache中的www文件夹. 这个www文件夹就是我们的默认目录,而这个目录是可以修改的: 打开conf文件夹里的httpd. ...
- Console ArcEngine 许可绑定
using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Geodatabase;using ESRI.ArcGIS.DataSourcesFile; using ESRI. ...
- 无法分配超出32(XXX)的MINEXTENTS报错的解决方法
今天在创建新表的时候,遇到该报错:ORA-01659 无法分配超出32(XXX)的MINEXTENTS 解决方法:修改表空间大小. 命令如下: ALTER DATABASE DATAFILE ''D: ...
- log4j日志输出级别高低
Log4j是Apache的开源项目一个功能强大的日志组件,提供方便的日志记录.日志记录器(Logger)是日志处理的核心组件Log4j建议只使用四个级别,优先级从高到低分别是FATAL, ERROR. ...
- (转)MySQL优化实例
在Apache, PHP,MySQL的体系架构中,MySQL对于性能的影响最大,也是关键的核心部分.对于Discuz!论坛程序也是如此,MySQL的设置是否合理优化,直接影响到论坛的速度和承载量!同时 ...
- HTTP常见错误代码总结
1.HTTP 401 用户验证失败.不允许继续访问 2.HTTP 403 禁止访问,访问web应用,没有指定要访问页面的名称 3.HTTP 404 请求的文件找不到,一般情况是在浏览器输入地址时,输入 ...