今天在Windows Server 2003下安装mysql,遇到不少问题。之前在另外两台服务器安装的时候也遇到了几个问题,最后找到不少文章解决了,记录一下。
所有版本都是免安装的32和64一样配置,另外几个问题下面有写到。
1、下载解压
首先从官网下载安装包,下载连接:http://dev.mysql.com/downloads/mysql/5.1.html#downloads
由于最新的版本5.7.20和5.6.38下载解压之后都没有my-small.ini配置文件,因此下载的是5.5.58-win64版本。解压到要安装的盘,我放的是C:\Program Files (x86)。
2、配置环境变量
右击“我的电脑”--属性--高级系统设置--环境变量--系统变量
新建环境变量:变量名 MYSQL_HOME,变量值C:\Program Files (x86)\mysql-5.5.58-winx64;(解压后文件夹的路径)
在系统变量中找到path--编辑--在最后面加上 ;%MYSQL_HOME%/bin ;注意前面一定要加分号,后面最好不要加分号,不确定加了分号之后对不对
3、配置my-small.ini文件
在安装文件夹下找到 my-small.ini 配置文件, 打开进行编辑, 在 [mysqld] 下添加两行:
basedir = C:\Program Files (x86)\mysql-5.5.58-winx64
datadir = C:\Program Files (x86)\mysql-5.5.58-winx64\data
port = 3306
且在[Client]和 [mysqld] 下均添加一行: default-character-set = utf8
修改之后的文件内容如下图所示
4、安装
开始---搜索栏中输入cmd----enter,用管理员权限打开系统命令窗口,
输入:mysqld --install
提示service successfully installed安装成功;
5、启动mysql
启动:net start mysql
停止:net stop mysql
启动:net start mysql,出现系统错误2,系统找不到指定文件
这里是最需要注意的地方,在安装mysql服务时,一定要切换到mysql安装目录的bin目录下,不管你是否配置环境变量,否则在安装完后启动服务还是会报上面的错误。
切换到bin目录后,先删除前面安装的mysql服务(删除服务不一定要到bin目录),再重新在bin目录下安装mysql服务,然后启动:
以下的步骤作为基本的步骤,能够确保你能运行一个基本的mysql:
1、将mysql-5.5.57-win32解压到C盘根目录下,更改文件夹名称为mysql-5.5.57;
2、在C盘根目录下建立一个文件夹mysqldb,内含1个文件夹data;
3、在C:\mysql-5.5.57文件夹下,新建一个my.ini文件(ANSI格式),主要配置内容如下:
[mysqld]
port=3306
character_set_server=utf8
basedir=C:\\mysql-5.5.57
datadir=C:\\mysqldb\\data
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
port=3306
default-character-set=utf8
[mysql]
default-character-set=utf8
4、将C:\mysql-5.5.57\data文件夹下的所有文件复制到C:\mysqldb\data文件夹下;
5、cmd控制台cd到C:\mysql-5.5.57\bin目录内,执行下面的命令:
mysqld --install
以上命令回车后正常的结果是:Servicesuccessfully installed
6、再输入下面的命令:
mysqld --console
以上命令会导致命令等待(不会退出:https://dev.mysql.com/doc/refman/5.5/en/server-options.html#option_mysqld_console)
7、ctrl+C后,再输入下面的命令:
net start mysql
以上命令回车后正常的结果是:MySQL服务正在启动\n MySQL服务已经启动成功。
8、系统环境变量的配置。继续输入命令:
sysdm.cpl
以上打开“系统属性”对话框,切换到“高级”|“环境变量”内;
9、对Path环境变量添加;C:\mysql-5.5.57\bin;
10、输入mysql -hlocalhost -uroot -p,默认的密码为空;
11、进行其他的操作。比如首先做的第一件事是修改密码:
>use mysql;
>update user set password=password(‘root’)where user=’root’;
>flush privileges;
*停止mysql服务的命令是net stop mysql;
*删除mysql服务的命令是mysqld --remove;
mysql5.7
1、解压下载的文件、解压后的目录(data目录和my.ini是后来创建的)
2、添加环境变量(能安装mysql的人应该都知道如何配置环境变量)
3、新建my.ini文件(该文件是mysql启动时依赖的配置文件,解压后的文件中竟然没有一个默认的配置,也是醉了)
4、新建数据存储目录(即第3步中,datadir指定的目录)
5、启动控制台(必须以管理员权限启动,命令提示符),进入到mysql的解压目录
6、装载mysql服务(由于免安装版不会自动装载mysql服务,必须手动装载)
mysqld --install
7、初始化数据库(免安装版中不会自动创建数据库,需要手动创建)
mysqld --initialize-insecure --user=mysql;
8、启动mysql服务(由于my.ini中制定了启动的参数,本次启动为忽略密码的方式,此时通过navicate连接本地数据库会成功登录,并且mysql为名的数据库已经创建成功)
net start mysql
9、登录数据库,并修改密码(由于本次启动为忽略密码,提示输入密码时直接回车就可以登录)
mysql –u root –p
update mysql.user set authentication_string=password('123456789') where user='root' and Host = 'localhost';
10、将mysql服务停掉,修改my.ini中的配置,修改为密码验证模式之后再次启动mysql,以后就可以正常使用mysql了
net stop mysql
注:本文大部分内容都是引用的,原文中第7和第8两步是颠倒的,亲测发现颠倒之后,在初始化数据库的时候会提示错误。
分析之后,讲服务停掉,并删除data下的文件。先初始化数据库,再启动服务,可以保证数据库初始化成功,并且服务正常启动。
Skip-External-Locking参数介绍
MySQL的配置文件my.cnf中默认存在一行skip-external-locking的参数,即跳过外部锁定。根据MySQL开发网站的官方解释,External-locking用于多进程条件下为MyISAM数据表进行锁定
如果你有多台服务器使用同一个数据库目录(不建议),那么每台服务器都必须开启external locking;
参数解释
当外部锁定(external-locking)起作用时,每个进程若要访问数据表,则必须等待之前的进程完成操作并解除锁定。由于服务器访问数据表时经常需要等待解锁,因此在单服务器环境下external locking会让MySQL性能下降。所以在很多Linux发行版的源中,MySQL配置文件中默认使用了skip-external-locking来避免external locking。
当使用了skip-external-locking后,为了使用MyISAMChk检查数据库或者修复、优化表,你必须保证在此过程中MySQL服务器没有使用需要操作的表。如果没有停止服务器,也至少需要先运行
代码如下:
mysqladmin flush-tables
命令,否则数据表可能出现异常。
参数使用说明
如果是多服务器环境,希望打开external locking特征,则注释掉这一行即可
代码如下:
# skip-external-locking
如果是单服务器环境,则将其禁用即可,使用如下语句
代码如下:
skip-external-locking
注意事项
在老版本的MySQL中,此参数的写法为:
代码如下:
skip-locking
如果在新版本MySQL配置中依然使用此写法,则可能出现:
[Warning] ‘–skip-locking' is deprecated and will be removed in a future release. Please use ‘–skip-external-locking' instead.错误。
navicat连接数据库1045错误
1045 Access denied for user 'root'@'localhost' (using password:YES)
这个意思是说:用户“root”@本地主机的访问被拒绝
这种问题的本质是用户密码出现错误。
解决经验:
1.找到MySQL安装路径下的my.ini文件,用记事本的方式打开;
2.打开后,找到mysqld这个位置,这个文件的内容中有多个mysqld,注意看箭头所指位置
3.在 [mysqld] 底下添加语句:skip-grant-tables,添加完毕后保存。如果提示不让修改这个文件,则可将它复制到桌面,再用记事本打开它,添加完毕后,将桌面上的文件复制到原来的地方,赋值时选择替换目标文件;
好学的你肯定也想知道这个skip-grant-tables是什么意思,如下介绍:
skip-grant-tables作为启动参数的作用:MYSQL服务器不加载权限判断,任何用户都能访问数据库。
也就是说,启用这个参数之后,数据库的安全性会降低。
4.WIN+R —>cmd—>mysql -u root -p,这个命令是连接数据库服务器的命令;遇到Enter passward:直接回车;
5.继续执行如下操作:
mysql>use mysql //使用这个数据库
mysql>uodate user set passward=passward("123456") whrer user="root"; //修改数据库的密码
mysql>flush privileges; //刷新数据库
这要步骤已经完成,我们来看看修改后的用户和密码:
到这里修改密码的工作已经完成。接下来要将在my.ini中添加的语句删掉。删掉之后再重启服务器,在测试链接,如果没有错误,一切OK;如果删掉语句,重启服务器之后任然有1045错误,那么,还是在my.ini原来删掉这条语句的位置中添加这条语句:skip-grant-tables,再重启服务器,再测试,一切OK。
mysql 在Windows2003安装,系统无法执行指定程序
问题出现:
后来各种百度谷歌。。。然后学会看系统日志了,计算机管理-事件查看器-系统。。。
发现了错误
还是想问这是啥???????
事件ID为32的描述是这样的:找不到附属汇编 Microsoft.VC90.CRT,上一个错误是 参照的汇编没有安装在系统上。
事件ID为59的描述是这样的:Resolve Partial Assembly 为 Microsoft.VC90.CRT 失败。 参考错误消息: 参照的汇编没有安装在系统上。
另一个事件ID为59的描述是:Generate Activation Context 为 E:\***\php.exe 失败。 参考错误消息: 参照的汇编没有安装在系统上。
然后借用一位大哥的博客:
http://www.deepseath.com/?p=858
下载安装地址:http://download.microsoft.com/download/9/7/7/977B481A-7BA6-4E30-AC40-ED51EB2028F2/vcredist_x86.exe
下载安装一下就ok了:
————————————————
以上参考CSDN和博客园整理而来,后面遇到就不用遍地找了