Error: /usr/bin/mysqlcheck doesn’t support multiple contradicting commands.

MySQL 5.5对比MySQL 5.0和5.1改变还真不少,就连我以前常用的修复表命令到了5.5时代居然都不能用了。。。

/usr/bin/mysqlcheck --check --auto-repair --optimize --all-databases

一运行就给我报:

Error: /usr/bin/mysqlcheck doesn't support multiple contradicting commands.

而且这个错误在Google里面都好像没有太多的答案,最好在一个阿拉伯文的论坛里面找到了解决方案:其实只要去掉–check就好了

/usr/bin/mysqlcheck --auto-repair --optimize --all-databases

WIFI无线信号最好还是使用1-11频道

最近忙得要死,忙里偷闲中,解决了一个WIFI的故障。

故障现象:新买的一个思科的AIR-AP113,配置好之后发现所有的东西工作正常,除了Wireless IP Phone。

解决思路:仔细检查了所有的配置,实在是没发现哪个地方不对,而且使用其他设备(如笔记本)都能获到IP,能正常连接到网络。后来怀疑网线质量问题导致PoE供电不足,换了网线,甚至与正常的AP进行位置对调,故障仍在。最后把频道从13调到11,一切都正常了。

故障原因:好像在美国的WIFI设备只使用1-11频道,而可能我们那个Wireless IP Phone是从美国买的。。。

mysql的FILE权限

前天晚上把MySQL的系统数据库给重装/升级了一下,结果昨天就出了问题了

昨天整整花了两个小时调试了两个小问题,第一个是procedure的问题,第二个就是这个FILE权限的问题。

第一个问题由于前面有function与trigger的经验,很快就定位解决了。

第二个问题由于以前没有经验,弄了好久才定位到这位一段SQL上面,当然了,他原来的SQL可比这个长多了。

SELECT * INTO OUTFILE 'data.txt'
  FIELDS TERMINATED BY ','
  FROM table2;

原来要让MySQL向系统里面写文件必须要给一个FILE权限。而这个权限是一个全局权限,我们在用下面这个语句进行授权时根本就不能把这个权限授给用户。

grant ALL on db.* to user@'host' identified by 'password';

必须要单独进行授权:

grant FILE on *.* to user@'host' identified by 'password';

思科交换机接HUB后只允许一台设备上网

机房扩建后,厂区有三台电脑始终说不能上网,因为对思科的设备不熟悉,用设备测了一下午也没找出来问题在哪里。

那三台电脑与另外三台指纹考勤机连到同一个很小的8口交换机汇总后再连到新的Cisco 2960上。设备测的时候发现,从Cisco 2960到小8口交换机之前是好的,到小8口交换机之后也是好的。但那三台电脑却始终都不能上网。

最后同事提醒说,会不会是交换机的配置问题。我虽然不太相信,但抱着试试的心理,还是从原来的记录里面找到了它们以前端口。还好这个端口没被重新配置,不然,我估计我怎么个死法都不知道。

下面这个是旧端口的配置:

SW003#show running-config interface GigabitEthernet 1/0/2
Building configuration...

Current configuration : 137 bytes
!
interface GigabitEthernet1/0/2
 switchport access vlan 10
 switchport mode access
 priority-queue out
end

下面这个是普通口的配置,通过web interface启用的smartport配置

SW003#show running-config interface GigabitEthernet 1/0/3
Building configuration...

Current configuration : 336 bytes
!
interface GigabitEthernet1/0/3
 switchport access vlan 10
 switchport mode access
 switchport port-security
 switchport port-security aging time 2
 switchport port-security violation restrict
 switchport port-security aging type inactivity
 macro description cisco-desktop
 spanning-tree portfast
 spanning-tree bpduguard enable
end

问了问换网络的朋友,原来默认的smartport是开启了安全端口,在同一个口只允许一个MAC地址进行通讯。。。

最后把新口也配置成老口的样子:

SW006#show running-config interface gigabitEthernet 0/18
Building configuration...

Current configuration : 136 bytes
!
interface GigabitEthernet0/18
 switchport access vlan 20
 switchport mode access
 priority-queue out
end

可惜下班了,只能明天再测了。

其实同事一开始就在提醒说会不会是配置的问题,唉,一开始就听他的查一下就好了,白白浪费一个下午。。。

删除 RDP 客户端中的终端服务器许可证[转]

the remote computer disconnected the session because of an error in the licensing protocol. please try connecting to the remote computer again or contact your server administrator.

来源:http://support.microsoft.com/kb/187614/zh-cn

如果某个未经授权的客户端首次连接到终端服务器,终端服务器将向该客户端发出一个临时的终端服务器客户端访问许可证 (CAL) 令牌。用户登录到会话后,终端服务器指示许可证服务器将发出的临时终端服务器 CAL 令牌标记为已验证。在客户端下一次连接时,系统会尝试将已验证的临时终端服务器 CAL 令牌升级为完全终端服务器 CAL 令牌。如果没有许可证令牌可用,则临时终端服务器 CAL 令牌将继续工作 90 天。该许可证存储在客户端的注册表中。

32 位 RDP 客户端将其许可证存储在 HKEY_LOCAL_MACHINE\Software\Microsoft\MSLicensing 项下。

重要说明:此部分、方法或任务包含有关如何修改注册表的步骤。但是,注册表修改不当可能会出现严重问题。因此,请一定严格按照下列步骤操作。为了获得进一步保护,请在修改注册表之前对其进行备份。这样就可以在出现问题时还原注册表。有关如何备份和还原注册表的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322756 (http://support.microsoft.com/kb/322756/ ) 如何在 Windows 中备份和还原注册表

要清理客户端的许可证缓存,只需删除此项及其子项。在客户端下一次连接到服务器时,它将获得另一个许可证。

对于 16 位 RDP 客户端,请运行 regedit /v。然后删除“\Software\Microsoft\MSLicensing”下的项以清理客户端的许可证缓存。还可以删除 \Windows\System\Regdata 中的 BIN 文件。

Macintosh RDP 客户端将许可证存储在本地计算机上 /users/Shared/Microsoft/RDC Crucial Server Information/ 下的文件夹层次结构中的一个文件内。要清理 Macintosh 客户端的许可证缓存,请删除此文件夹中的内容。客户端将在下一次连接时尝试从服务器获得新许可证。

如果删除运行 Windows Vista 或更高版本的客户端上的 HKEY_LOCAL_MACHINE\Software\Microsoft\MSLicensing 子项,则以后连接终端服务器的尝试可能会失败。并且,您会收到以下错误消息:

An Error occurred in the Licensing Protocol

要解决此问题,请右键单击“远程桌面连接”快捷方式,然后单击“以管理员身份运行”。默认情况下,远程桌面连接以具有最低用户权限的用户身份运行。默认情况下,受限用户不具有向 HKEY_LOCAL_MACHINE 写入注册表项的权限。因此,重写 MSLicensing 项的尝试失败。使用管理凭据启动“远程桌面连接”可提供写入所需注册表项所必需的权限。

后记:
这个东西一直困扰我好久,因为自己不用windows,而在linux下面,可以直接用-n newname来解决,所以就一直隔这里了。这几天被同事一直催着解决这个问题,没办法,这下仔细研究了一下。
看样子,选中关键词很重要啊。。。。

no suitable drive was found in the geneated device

今天早上在上课的时候,有同事跟我说他怎么就是不能重新安排grub,我问他报什么错误,他就是不说,然后我就只好自己测试了。果然,在进入rescue模式之后,一旦用grub-install来安装grub,只是提示这个错误:

No suitable drive was found in the generated device map

一查看/boot/grub/device.map,发现上面居然只有一行:

(fd0) /dev/fd0

居然连硬盘都没有添加上去,当然安装不成功了。。。
于是,在这个文件里面加上

(hd0) /dev/sda

然后再运行grub-install,果然就可以安装了。

PS:最后还有一个小问题,在grub.conf配置与fstab配置正确的情况下,系统启动还是报kernel panic,最后重装了内核才搞定。估计这位仁兄是在安装grub之前就装了内核,结果还是device map不正确导致的问题

thinkpad x200 ubuntu无线崩溃解决方案

最近不知道为什么,我x200总是会出现无线崩溃的情况。就算你用下面这条命令,得到的居然是设备忙…

$ sudo iwlist can
lo        Interface doesn't support scanning.

eth0      Interface doesn't support scanning.

pan0      Interface doesn't support scanning.

wmaster0  Interface doesn't support scanning.

wlan0     Interface doesn't support scanning : Device or resource busy

没办法,只好试着把驱动删除,然后再重新加载

用下面命令删除相关的无线模块:

# modprobe -r iwlagn
# modprobe -r iwlcore
# modprobe -r mac80211

用下面命令重新加载无线模块

# modprobe  mac80211
# modprobe  iwlcore
# modprobe  iwlagn

根据无线网卡型号的不同,上述模块名应该会有不同,附上我的无线网卡型号做参考

03:00.0 Network controller: Intel Corporation Wireless WiFi Link 5300

mysql从库上出现的奇怪错误

今天监控脚本发现从库突然停了,又报了以下错误:

Last_Error: Error 'There is no 'user'@'192.168.0.234' registered' on query. Default database: 'testdb'. Query: 'INSERT INTO testtablle(userId,uesrName)  VALUES (128,'user')'

很奇怪的错误,后来一问,原来是DBA在更新库的时候用了自己的帐号,而在从库上没有给他设置相应的帐号,这才导致从库同步失败,建立一个拥有相同权限的用户,然后重启一下slave就可以了