If your web application heavily uses your SQL 2008 database and you want to implement ASP.Net Membership/Roles provider, you can use the MySQL database instead of SQL 2008. This should enhance application performance. To get started, you will need to download the MySQL Connector/.Net from MySQL website and install it on your computer. When you have installed it on your computer you will need to navigate to the programs folder and under the MySQL/MySQLConnector/Assemblies copy the MySQL.Data and MySQL.web into your applications Bin folder. Note: The MySQL.Data assembly is already installed on the Winhost GAC, but the version installed on the servers GAC is version 126.96.36.199. Unfortunately the MySQL.web is not installed on the servers GAC therefore you will need to upload it along with your web application in the Bin folder. You can either use the MySQL.Data installed on the server or also upload your own MySQL.Data assembly in the Bin folder. Either way should work. You simply need to reference or add the assemblies correctly. For this example I went ahead and used my own MySQL assemblies and uploaded it to the Bin folder. This is to provide uniformity. Make sure you setup your MySQL database. You will need to know the MySQL server name, MySQL database name, the MySQL login, and MySQL password for your connection string. Once this is done, you will need to modify your applications web.config file. Portion for the connection string… <connectionStrings> <remove name="LocalMySqlServer"/> <add name="LocalMySqlServer" connectionString="Server=MySQL server name; Database=MySQL database name; uid=db login; pwd=db password;" providerName="MySql.Data.MySqlClient"/> </connectionStrings> Coding for the membership/provider/roles in the web.config file… <membership defaultProvider="MySqlMembershipProvider"> <providers> <clear /> <add name="MySqlMembershipProvider" type="MySql.Web.Security.MySqlMembershipProvider,MySql.Web,Version=188.8.131.52, Culture=neutral, PublicKeyToken=c5687fc88969c44d" autogenerateschema="true" connectionStringName="LocalMySqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requireQuestionAndAnswer="false" requireUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="0" passwordStrengthRegularExpression="" applicationName="/" /> </providers> </membership> <profile defaultProvider="MySqlProfileProvider"> <providers> <clear/> <add name="MySqlProfileProvider" type="MySql.Web.Profile.MySQLProfileProvider, MySql.Web, Version=184.108.40.206, Culture=neutral, PublicKeyToken=c5687fc88969c44d" conectionStringName="LocalMySqlServer" applicationName="/"/> </providers> </profile> <roleManager enabled="true" defaultProvider="MySqlRoleProvider"> <providers> <clear/> <add connectionStringName="LocalMySqlServer" applicationName="/" name="MySqlRoleProvider" type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=220.127.116.11, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/> </providers> </roleManager> <trust level="Full"/> <machineKey validationKey="AutoGenerate" validation="SHA1"/> Once you have finished with the web.config file, you can go to the ASP.Net Configuration tool under the menu Website and setup your user for the form login. Bear in mind when you go to the Provider tab and test the connection with your Membership Provider and Roles Provider you will get a connection error. Pay no attention to that. The reason is that ASP.Net Membership does not know how to use the MySQL.Data to connect to the MySQL server. You can still go to the Security tab and setup your users, create roles, and manage access rules. Infact you will need to run that first before you deploy your ASP.Net membership/roles provider on our server. When you run the Security settings, it triggers the autogenerateschema and setups all the required tables and objects on the MySQL database so that the login credentials will be stored on the MySQL server. You will have a second option to create the membership/roles schema on the database other then auto generating it. If you download the source version of the MySQL Connector/Net, you will find a folder MySQL.Web/Providers/Properties. Inside that folder you will see 6 .sql files. Run them against your MySQL database and that will create all the required objects on the MySQL database for ASP.Net membership/roles to work. One last note on this matter, the validation “SHA1” is very important. This has to be specifically defined on your web.config file. Otherwise you will not be able to log into your web application. According to the a forum post I found on MySQL, .Net changed its hashing algorithm from SHA1 to HMACSHA256. You will need to force MySQLMembershipProvider to use SHA1.