在其装上CentOS64位的服务器系统,对于英文0基础,linux0基础的我来说,过程是相当痛苦的,这里我就不分享了。下面分享一下在这个系统下安装Mysql和Memcached的过程。 安装Mysql1.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. 安装mysqlsudo 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'; # ...代表要设置的密码
service mysqld restart #重启服务 mysql -u root -p grant all PRIVILEGES on *.* to root@'%' identified by '[...]'; # '%'代表不限制ip,若要限制可指定具体ip, [...]为密码
flush privileges; #刷新设置 firewall-cmd --zone=public --add-port=3306/tcp --permanent
#命令含义: 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 2.查看或修改memcached配置vim /etc/sysconfig/memcached
默认文件如下
3.找到memcached安装位置,设置启动参数 /usr/bin/memcached -d -u root -m 512 -p 11211 #设置启动参数
启动参数说明:
4.启动和查看状态 5.开放11211端口firewall-cmd --zone=public --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(new User { Name = "tom", Age = 18, Email = "tom@tom.com" }); db.Users.Add(new User { Name = "jim", Age = 18, Email = "jim@tom.com" });//插入两条数据 if (db.SaveChanges() > 0) { 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="192.168.0.103" port="11211" /> </servers> <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" /> </memcached> </enyim.com> </configuration> 当运行完第一次没问题后,把EF部分的代码全注释掉,可以直接从缓存取数据
(责任编辑:好模板) |